带条件的sql insert查询 - 不存在

时间:2015-09-23 22:13:52

标签: php mysql

我正在尝试将数据添加到具有条件的表中 - 如果数据已经存在 - 请不要添加它。我不想使用INSERT IGNORE INTO

SQL:

INSERT INTO `alerts` (type, userID, fromID, refID, createDate) 
    VALUES ('commentReply', 2, 1, 452, 1443048940) 
    WHERE NOT EXISTS (SELECT * 
                        FROM alerts 
                        WHERE `type` = 'commentReply' 
                        AND userID = 2 
                        AND viewed = 0
                        ) 

错误:

  

#1064 - 您的SQL语法出错; 检查与您的MySQL服务器版本对应的手册,以便使用正确的语法   'WHERE NOT EXISTS附近(SELECT id FROM alerts WHERE`type` =   第3行的'commentR'

有谁知道我的陈述有什么问题?

1 个答案:

答案 0 :(得分:1)

让我回答你的问题

如果您使用WHERE NOT EXIST,则需要按以下方式编写代码:

INSERT INTO alerts (type,id,....)
SELECT 'COL1 VALUE', 'COL2 VALUE'
WHERE NOT EXISTS (SELECT * FROM TABLE_1 WHERE COL1='COL1 VALUE');

或者你可以用另一种方式来做。

IF (SELECT COUNT(*) FROM alerts WHERE yourcondition > 0)
  UPDATE alerts SET c1=(SELECT id FROM beta WHERE yourcondition)
ELSE
BEGIN
  INSERT INTO alerts (names..) VALUES (values...)
END