我使用insert into select from语句将查询的结果集插入到包含标识列的表中。 我一直都是错误的 无法在对象'dbo.TABLE1'中插入具有唯一索引'IX_TABLE1'的重复键行。
请帮忙
答案 0 :(得分:2)
对于MSSQL使用WHERE NOT EXISTS
INSERT INTO tbl1 (keycol, col1, col2)
SELECT keycol, col1, col2
FROM tbl2
WHERE NOT EXISTS
(SELECT 1
FROM tbl1
WHERE tbl1.keycol = tbl2.keycol);
对于MySQL使用INSERT IGNORE
INSERT IGNORE INTO table
SELECT x, y, z
FROM table2
WHERE a=b
这将跳过任何重复的键错误,只插入不会与现有的唯一/主键冲突的行。
答案 1 :(得分:0)
您正在使用的select语句正在检索具有重复值的行,这些行在插入表格时会触发您的约束。
您可以通过插入数据的唯一索引验证列名称。获得列后,尝试在select语句中检查映射到哪个列并检查重复记录。虽然您可能有一个标识列,但您的用于插入的表仍包含与另一列链接的约束,以阻止重复记录。
答案 2 :(得分:0)
所有这些错误意味着您正在尝试插入已存在于表中的值。如果您提供更多信息,我可以尝试并提供帮助,但您没有提供大量信息。