我似乎无法找到此查询中的错误位置。这是我第一次使用WHERE NOT EXISTS
语法。有人能帮我辨别我做错了什么吗?对我来说这似乎没问题。
INSERT INTO mojo (mojo_id, account_id) VALUES (35, 1)
WHERE NOT EXISTS (SELECT points_id FROM mojo
WHERE mojo_id = 35 AND account_id = 1 LIMIT 1) LIMIT 1
答案 0 :(得分:4)
提示:如果您希望mojo_id和account_id的组合是唯一的。尝试在MySql中的这些字段上设置唯一索引。然后,将查询更改为:
INSERT IGNORE INTO mojo (mojo_id, account_id) VALUES (35, 1)
当mojo_id和account_id索引已经存在时,IGNORE语句将跳过插入。
答案 1 :(得分:1)
您使用values
代替select
:
INSERT INTO mojo (mojo_id, account_id)
select 35, 1
from (select 1 as v) OneRow
WHERE NOT EXISTS (SELECT points_id
FROM mojo
WHERE mojo_id = 35 AND account_id = 1
) ;
from
子句是因为MySQL需要from
子句才能使用where
。
我删除了limit 1
,因为这些都没有做任何事情。