IF NOT EXISTS/WHERE NOT EXISTS 上的 MYSQL 错误 [英] MYSQL Error on IF NOT EXISTS/WHERE NOT EXISTS

查看:91
本文介绍了IF NOT EXISTS/WHERE NOT EXISTS 上的 MYSQL 错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆