在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
正在做出一些尚未说明的假设。