在IF NOT MISQL /不存在的情况下MYSQL错误

时间:2013-09-09 10:52:52

标签: mysql sql syntax

我在我的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行

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');