insert items (ean)
select ean
from books
where ean not in (select ean from mrs..items)
本に重複があると仮定します。SQLは、事前に挿入するレコードを決定してから、重複を挿入し続けますか。それとも、進行中にチェックすることで重複を挿入することを防ぎますか?
insert items (ean)
select ean
from books
where ean not in (select ean from mrs..items)
本に重複があると仮定します。SQLは、事前に挿入するレコードを決定してから、重複を挿入し続けますか。それとも、進行中にチェックすることで重複を挿入することを防ぎますか?
これはうまくいくはずです
insert into items (ean)
select Distinct ean
from books
重複が作成されますが、以下に示すように、selectでdistinctを指定することでそれを防ぐことができます。
insert into items (ean)
select distinct ean
from books
where ean not in (select ean from mrs..items)
以下のコードを試すことができます
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つのレコードを選択して挿入する方法を指定できます。
以前の回答で私が見逃しているのは、グループ化の理由です。
はい、ステートメントは重複を防ぎますが、挿入しようとしている選択に重複がない場合に限ります。挿入はアトミックであり、(...) ではないチェックも 1 回だけ行われます。
記録ではなく、セットで考えてください。そうすれば、'I'vetested it and it works...' コメントなしで実行できます。