T-SQL MERGEステートメントを使用したクエリがあります。パフォーマンスの問題のために、私はIF Exists Update
とIf Not Exists Insert
を使ってクエリを書いています。 Insert/Updateは何の問題もなく書いています。しかし、私はDELETEを処理することができません。何人かが私を助けてくれますか?ここでSQL ServerのMERGEステートメントDELETE代替
は、単一のDELETEステートメントで
WHEN NOT MATCHED BY SOURCE THEN
DELETE member_topic;
を処理する方法をサンプル
---SAMPLE MERGE STATEMENT
MERGE
member_topic AS target
USING
someOtherTable AS source
ON
target.mt_member = source.mt_member
WHEN MATCHED THEN
UPDATE SET target.mt_notes = source.mt_notes
WHEN NOT MATCHED THEN
INSERT (mt_member, mt_topic, mt_notes) VALUES (source.mt_member, source.mt_notes)
WHEN NOT MATCHED BY SOURCE THEN
DELETE member_topic;
--UPDATE
UPDATE T SET T.mt_notes = S.mt_notes
FROM member_topic T
JOIN someOtherTable S ON T.mt_member=S.mt_member
--INSERT
INSERT INTO member_topic(mt_member, mt_topic, mt_notes)
SELECT mt_member, mt_topic, mt_notes
FROM someOtherTable S
WHERE NOT EXISTS(SELECT 1
FROM member_topic T
WHERE T.mt_member=S.mt_member)
です。 PROCで始まりと終わり
MERGE dbo.Tablet AS TARGET
USING dbo.QueryView AS SOURCE
ON (
TARGET.[ID] = SOURCE.[ID]
)
WHEN MATCHED
THEN
UPDATE SET
TARGET.[ID] = SOURCE.[ID]
WHEN NOT MATCHED BY TARGET THEN
INSERT (ID, [Name] )
VALUES (SOURCE.[ID], SOURCE.[Name] )
WHEN NOT MATCHED BY SOURCE THEN
DELETE;
確かにしてみてください、あなたは –
後に、これまでお使いのデータベース構造をやっているサンプルコードを投稿してくださいサンプルコード、あなたが望むもの、そしてあなたが得ているもの。 –