同一のスキーマ テーブルで重複処理を使用して行をコピーする
重複を防ぎながら、テーブル 'srcTable' から 'destTable' に行を転送したいと考えています。 。ただし、WHERE 句でのサブクエリの使用は効果的に機能しません。
WHERE 句に関する問題の解決
エラーは、適切な句がないことにあります。サブクエリ内の句を使用して重複を特定します。次のようにサブクエリに必要な条件を追加します。
INSERT INTO destTable SELECT Field1, Field2, Field3, ... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1 = destTable.Field1 AND srcTable.Field2 = destTable.Field2 ... etc.) )
外部結合を使用した代替アプローチ
あるいは、より簡潔なソリューションとして外部結合の使用を検討してください。
INSERT INTO destTable SELECT s.field1, s.field2, s.field3, ... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
ソース内の重複の処理テーブル
ソース テーブル内の重複行に特に問題がある場合は、挿入ステートメントで個別の句を使用することを検討してください。
INSERT INTO destTable SELECT Distinct field1, field2, field3, ... FROM srcTable
追加の推奨事項
以上が重複を防ぎながら、あるテーブルから別のテーブルに行を効率的にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。