-3

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

2 回答 2

4

提示:如果您希望 mojo_id 和 account_id 的组合是唯一的。尝试在 MySql 中的这些字段上设置唯一索引。然后,将查询更改为:

INSERT IGNORE INTO mojo (mojo_id, account_id) VALUES (35, 1)

当 mojo_id 和 account_id 索引已经存在时,IGNORE 语句将跳过插入。

于 2013-06-25T14:08:23.273 回答
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 1s,因为它们什么也没做。

于 2013-06-25T14:03:44.137 回答