IF NOT EXISTS/WHERE NOT EXISTS 上的 MYSQL 错误 [英] MYSQL Error on IF NOT EXISTS/WHERE NOT EXISTS
问题描述
我在我的 SQL 查询中使用了一个简单的 IF NOT EXISTS/WHERE NOT EXISTS 语句(我都试过),但我总是遇到 mysql 错误,不知道为什么.用不同的引号试过,检查我的MySQL服务器版本等
I'm using a simple IF NOT EXISTS/WHERE NOT EXISTS statement in my SQL query (I tried both) and I'm always getting a mysql error, no idea why. Tried it with different quotation marks, checked my MySQL server version, etc.
这些是我用过的语句
IF NOT EXISTS (SELECT * FROM kurs_users WHERE kurs_users.uid = 'someuser')
BEGIN
INSERT INTO kurs_users(uid) VALUES ('someuser')
END
和
INSERT INTO kurs_users
VALUES ('', 'someuser')
WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser');
错误信息:
您的 SQL 语法有错误;检查手册对应于您的 MySQL 服务器版本以使用正确的语法附近 'WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid ='someuser')' 在第 1 行
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser')' at line 1
推荐答案
values
语句不允许使用 where
子句.将其更改为 insert ...选择
.但是,在 MySQL 中,where
子句不能没有 from
,所以使用子查询:
The values
statement does not allow a where
clause. Change it to insert . . . select
. However, in MySQL, you can't have a where
clause without a from
, so use a subquery:
INSERT INTO kurs_users
select col1, col2
from (select '' as col1, 'someuser' as col2) t
WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser');
我还鼓励您在 insert
语句中明确列出列:
I would also encourage you to list the columns explicitly in the insert
statement:
INSERT INTO kurs_users(UnnamedColumn, UserName)
select col1, col2
from (select '' as col1, 'someuser' as col2) t
WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser');
这篇关于IF NOT EXISTS/WHERE NOT EXISTS 上的 MYSQL 错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!