这个insert语句可以插入重复项吗?

时间:2012-07-20 03:34:12

标签: sql-server-2008 duplicates

insert items (ean)
select ean
from books
where ean not in (select ean from mrs..items)

假设书中有重复的内容。 sql会确定要预先插入哪些记录,然后继续插入重复项;或者它是否会通过检查来阻止自己插入重复项?

4 个答案:

答案 0 :(得分:1)

这应该有效

insert into items (ean) 
select Distinct ean 
from books

答案 1 :(得分:1)

它会创建重复项,但您可以通过在select上指定distinct来防止这种情况,如下所示。

insert into items (ean)
select distinct ean
from books
where ean not in (select ean from mrs..items)

答案 2 :(得分:0)

您可以尝试以下代码

insert into items (ean) 
select TOP 1 WITH TIES ean 
from books 
where ean not in (select ean from mrs..items) 
ORDER BY ROW_NUMBER() OVER(PARTITION BY ean ORDER BY <criteria>)

您只需指定条件,如何选择重复的一条记录进行插入。

答案 3 :(得分:0)

我在之前的答案中遗漏的是小组的原因。

是的,您的语句会阻止重复,但前提是您尝试插入的选择中没有重复项。插入是原子的,因此检查不在(...)中只执行一次。

在集合中而不是在记录中思考。那么你可以不用'我测试过它就可以了......'评论。