私はこのSQL Serverのinsert文の行を除外する方法は?
insert into A (id, nid)
(
select id, 100 as nid
from B
group by id
)
これは動作しますが、問題は、テーブルAである、(ID、NID)に主キー制約があり、計算されたネストされたクエリの行の一部、すでに存在しているような文を持っていますどのようにそれらをネストされたクエリに含めることを除外できますか?
おかげ
私はこのSQL Serverのinsert文の行を除外する方法は?
insert into A (id, nid)
(
select id, 100 as nid
from B
group by id
)
これは動作しますが、問題は、テーブルAである、(ID、NID)に主キー制約があり、計算されたネストされたクエリの行の一部、すでに存在しているような文を持っていますどのようにそれらをネストされたクエリに含めることを除外できますか?
おかげ
あなたはEXCEPT
を使用することができます。
insert into A (id, nid)
select id, 100 as nid
from B
group by id
EXCEPT
SELECT id, nid
FROM A;
行が存在する場合だけ確認...
insert into A (id, nid)
select id, 100 as nid
from B
WHERE NOT EXISTS (SELECT * FROM A WHERE A.id = B.id AND A.nid = 100)
group by id
PS:あなたの選択の周りに括弧が
不要です追加Where句:
insert A (id, nid)
select id, 100 as nid
from B
Where Not exists (Select * from A
Where id = B.Id
and nid = 100)
group by id
マージステートメントを使用して一致を無視する – SMor