在MySQL中插入同一表中的行
我正在执行以下在MySQL中插入同一表中的行,mysql,insert,mariadb,Mysql,Insert,Mariadb,我正在执行以下INSERT查询: INSERT INTO Elements (EventID, TypeID) SELECT EventID, 2 FROM Elements Where TypeID = 1 i、 e.使用另一个TypeID在同一个表中插入元素行。它工作正常 但是,如果某些行已经存在TypeID=2,则会出现问题。在这种情况下,我只想跳过这类行的插入,然后继续 INSERT IGNORE不适用于我,因为我没有这些列的唯一性或其他内容。我能做些什么?看看分组方式和规格 INS
INSERT
查询:
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
Where TypeID = 1
i、 e.使用另一个TypeID在同一个表中插入元素行。它工作正常
但是,如果某些行已经存在TypeID=2
,则会出现问题。在这种情况下,我只想跳过这类行的插入
,然后继续
INSERT IGNORE
不适用于我,因为我没有这些列的唯一性或其他内容。我能做些什么?看看分组方式和规格
INSERT INTO Elements
(EventID, TypeID)
SELECT EventID, 2
FROM Elements
GROUP BY EventID
HAVING MAX(TypeID)=1
这里的一个选项是添加一个唯一的索引,然后使用
insertignore。。。进入
:
ALTER TABLE Elements ADD UNIQUE unique_index (EventID, TypeID)
INSERT IGNORE INTO Elements (EventID, TypeID)
SELECT EventID, 2
FROM Elements
WHERE TypeID = 1
如果
Elements
表中已经存在EventID
,TypeID
对值,则此插入将失败。那么您是说您不能使用唯一索引吗?@TimBiegeleisen嗯,此表中没有此类索引。如果没有其他解决方案,我可能可以在查询之前添加索引,在查询之后删除?为什么不将唯一索引永久保留在那里,以便您可以继续使用它?@TimBiegeleisen我认为唯一索引对我有帮助,您会发布此解决方案吗?无论如何,谢谢:)我在下面给了你一个回复。小心。MAX
正在做出一些尚未说明的假设。