2つのテーブル内で一致するものを見つけようとしています。最初に電話番号を比較し、次に姓などを比較します。一致するものを新しいテーブルに挿入します。
私の質問は、SQLServerまたは.netプログラムで直接実行した方が、より高速で優れているかどうかです。
SQLの方が優れている場合は、助けが必要です。
そのレコードが一致テーブルに存在するかどうかを確認したいのですが、存在する場合は、このレコードのみを変更する必要があります。他の一致があることを指定します。
一致のタイプごとに個別の挿入および変更クエリを実行できます。もっといい方法があるのかしら。
マージを試しましたが、挿入は機能しましたが、変更するとエラーが発生します。以下を参照してください。
MERGE Matches AS M
USING (SELECT DOE.REG, sl.id FROM DOE INNER JOIN SL ON DOE.TEL = sl.phone) AS DOE
On M.doeid = DOE.reg
WHEN MATCHED THEN
UPDATE SET m.Phonematch = 1, datemodified = getdate()
WHEN NOT MATCHED THEN
INSERT(DoeID, SatmarID, PhoneMatch , Verified, DateCreated)
VALUES(DOE.REG, id, 1, (SELECT ID FROM MatchStatus where Status = 'Not Verified'), GETDATE());
エラー:
Msg 8672, Level 16, State 1, Line 1
The MERGE statement attempted to UPDATE or DELETE the same row more than once. This happens when a target row matches more than one source row. A MERGE statement cannot UPDATE/DELETE the same row of the target table multiple times. Refine the ON clause to ensure a target row matches at most one source row, or use the GROUP BY clause to group the source rows.