在 MySQL 中的相同 table 中插入行
Inserting rows in the same table in MySQL
我正在执行以下 INSERT
查询:
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
Where TypeID = 1
即使用另一个 TypeID 在相同的 table 中插入元素行。它工作正常。
但是,如果某些行已经存在 TypeID = 2
,就会出现问题。在这种情况下,我只想跳过这些行的 INSERT
并继续。
INSERT IGNORE
对我不起作用,因为我没有这些列的唯一性或其他内容。我能做什么?
查看规范中的 GROUP BY 和 HAVING
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
GROUP BY EventID
HAVING MAX(TypeID)=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
table.
中,则此插入将失败
我正在执行以下 INSERT
查询:
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
Where TypeID = 1
即使用另一个 TypeID 在相同的 table 中插入元素行。它工作正常。
但是,如果某些行已经存在 TypeID = 2
,就会出现问题。在这种情况下,我只想跳过这些行的 INSERT
并继续。
INSERT IGNORE
对我不起作用,因为我没有这些列的唯一性或其他内容。我能做什么?
查看规范中的 GROUP BY 和 HAVING
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
GROUP BY EventID
HAVING MAX(TypeID)=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
table.