假设我在一个表 users
中有两列 member_id
、email
。如果使用以下语句找不到类似数据,我将尝试添加新行:
INSERT INTO users(member_id, email)
VALUES (1,'k@live.com')
WHERE NOT EXISTS (SELECT * FROM users WHERE member_id=1 AND email='k@live.com');
但是,它不起作用。 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“WHERE EXISTS”附近使用的正确语法
请透露一些信息。谢谢。
最佳答案
假设您对 member_id
、email
或两者的组合有唯一的限制,我相信 INSERT IGNORE
会为您提供更好的服务。 ,如果该记录不存在,则会插入该记录。
INSERT IGNORE INTO users(member_id, email)
values (1, 'k@live.com');
如果没有唯一约束,就用这个technique here
INSERT INTO users(member_id, email)
SELECT 1,'k@live.com'
FROM dual
WHERE NOT EXISTS
(SELECT * FROM users WHERE member_id=1 AND email='k@live.com');
在虚拟选择中使用Dual
而不是users
,以将插入的行数限制为1。
关于MySQL WHERE NOT EXISTS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643062/