我在我的SQL查询中使用了一个简单的IF NOT EXISTS / WHERE NOT EXISTS语句(我试过了)并且我总是得到一个mysql错误,不明白为什么。尝试使用不同的引号,检查我的MySQL服务器版本等。
这些是我使用的陈述
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行
答案 0 :(得分:2)
values
语句不允许where
子句。将其更改为insert . . . select
。但是,在MySQL中,如果没有where
,则不能有from
子句,因此请使用子查询:
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
语句中明确列出列:
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');