2012-07-20 81 views
0
insert items (ean) 
select ean 
from books 
where ean not in (select ean from mrs..items) 

假设书中有重复。 SQL会确定要先插入哪些记录,然后继续插入重复项;还是会阻止自己插入重复的检查?该插入语句是否可以插入重复项?

+0

你想插入重复的吗? – Amit 2012-07-20 03:37:54

+0

不,我过于简化了查询...有更多的领域,其中一些可能会有所不同(或者不应该改变,但是这样做),所以使用明确不会帮助。我可以在这些字段上分组和使用min(),但我只是想看看这是否可行。 – 2012-07-20 03:44:50

+0

我还没有测试过您的查询,但只是看着它,我相信它会运行。 – Amit 2012-07-20 03:48:09

回答

1

这应该工作

+0

查看以上评论 – 2012-07-20 03:45:28

+0

其实我不能使用其他领域的独特原因,但我最终只是在其他领域进行分组和做max(),所以它们差别很大。 – 2012-07-20 03:58:29

1

这将创建副本,但你可以阻止通过指定的SELECT DISTINCT,如下图所示。

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

查看上面的评论 – 2012-07-20 03:45:34

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

你只需要指定的标准,如何从重复的一个记录应插入选择的代码。

0

我在以前的答案中错过的是该团队的原因。

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

想一套而不是记录。那么你可以在没有'我已经测试过它并且它可以工作...'的意见下做。