0

我在我的 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 服务器版本相对应的手册,以在第 1 行的 'WHERE NOT EXISTS (SELECT * FROM kurs_users WHERE uid = 'someuser')' 附近使用正确的语法

4

1 回答 1

2

values语句不允许有where子句。将其更改为insert . . . select. 但是,在 MySQL 中,不能有没有 a 的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');
于 2013-09-09T10:54:41.133 回答