いいえ MySQL の回答をお願いします!
基本的なクエリは次のとおりです (A がキーであると仮定します)。
INSERT INTO destination (A,B,C)
SELECT a1,b1,c1
FROM source
WHERE (selectconditions) ;
ソースには、宛先にまだある場合とない場合がある多くのレコードが含まれています。これは、重複レコードが検出されるとすぐに挿入が失敗することを意味します。
望ましい動作: INSERT または IGNORE
これは、特定の問題の望ましいシナリオです。可能であれば挿入し、そうでなければ続行します。
疑似 c#/java:
foreach(record in selectQuery)
{
try { destination.insert(record) }
catch(insertionException){//squelch}
}
これは、追加することで SQL で処理できます。
AND NOT EXISTS (SELECT A FROM destination INNER JOIN source on destination.A = source.a1)
クエリの最後まで -- つまり、挿入する前に確認してください。
この一般的な状況を処理するための他の代替手段は何ですか? これらの手法の長所と短所は何ですか?