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

基準を指定するだけで、重複から1つのレコードを選択して挿入する方法を指定できます。

于 2012-07-20T04:02:05.933 に答える
0

以前の回答で私が見逃しているのは、グループ化の理由です。

はい、ステートメントは重複を防ぎますが、挿入しようとしている選択に重複がない場合に限ります。挿入はアトミックであり、(...) ではないチェックも 1 回だけ行われます。

記録ではなく、セットで考えてください。そうすれば、'I'vetested it and it works...' コメントなしで実行できます。

于 2012-07-20T09:56:36.590 に答える