插入带有标识列的表中的select

时间:2010-03-16 13:39:09

标签: sql

我使用insert into select from语句将查询的结果集插入到包含标识列的表中。  我一直都是错误的 无法在对象'dbo.TABLE1'中插入具有唯一索引'IX_TABLE1'的重复键行。

请帮忙

3 个答案:

答案 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)

所有这些错误意味着您正在尝试插入已存在于表中的值。如果您提供更多信息,我可以尝试并提供帮助,但您没有提供大量信息。