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

假设书中有重复。sql会先确定要插入哪些记录,然后再继续插入重复;还是会通过检查来防止自己插入重复项?

4

4 回答 4

1

这应该工作

insert into items (ean) 
select Distinct ean 
from books
于 2012-07-20T03:37:20.767 回答
1

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

insert into items (ean)
select distinct ean
from books
where ean not in (select ean from mrs..items)
于 2012-07-20T03:37:27.657 回答
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>)

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

于 2012-07-20T04:02:05.933 回答
0

我在以前的答案中错过的是 group by 的原因。

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

在集合中而不是在记录中思考。然后你可以不用'我已经测试过它并且它有效......'评论。

于 2012-07-20T09:56:36.590 回答