哪里不存在查询错误

时间:2013-06-25 14:00:19

标签: mysql

我似乎无法找到此查询中的错误位置。这是我第一次使用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

2 个答案:

答案 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,因为这些都没有做任何事情。