我正在执行以下INSERT
查询:
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
Where TypeID = 1
即。将Elements行与另一个TypeID插入同一个表中。它运作正常。
但是,如果某些行已存在TypeID = 2
,则会出现问题。在这种情况下,我只想跳过这些行的INSERT
并继续。
INSERT IGNORE
对我不起作用,因为我对这些专栏没有独特之处或其他内容。我该怎么办?
答案 0 :(得分:1)
此处的一个选项是添加唯一索引,然后使用INSERT IGNORE ... INTO
执行插入:
ALTER TABLE Elements ADD UNIQUE unique_index (EventID, TypeID)
INSERT IGNORE INTO Elements (EventID, TypeID)
SELECT EventID, 2
FROM Elements
WHERE TypeID = 1
如果EventID
表中已存在TypeID
,Elements
值对,则此插入将失败。
答案 1 :(得分:0)
在规范中查看GROUP BY和HAVING
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
GROUP BY EventID
HAVING MAX(TypeID)=1