MySQL のテーブルから重複行を削除する
重複レコードを含むテーブルを扱う場合、データを維持するために重複行を削除する必要があります。誠実さと効率性。 MySQL では、これを実現するには重複行の特定と削除が必要であり、このプロセスは特定のクエリを通じて実行できます。
あなたの場合、次のクエリを使用してフィールド empssn に基づいて重複レコードをすでに特定しています。
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
重複レコードを削除するために、次のクエリを実行しようとしました:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
ただし、MySQL ではターゲット テーブルを FROM 句で指定することが許可されていないため、エラーが発生しました。更新クエリ。
この問題を解決するには、サブクエリを派生テーブルでラップすることが 1 つの方法です。
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
この変更されたクエリを使用すると、一時的な派生テーブルが効果的に作成されます。 (X) 従業員テーブルからの必要なデータが含まれています。メインの DELETE クエリは、この派生テーブルを参照して、empid と empssn の一意の組み合わせに基づいて重複行を削除できます。この方法により、発生したエラーが解決され、重複レコードを正常に削除できるようになります。
以上がターゲットテーブルが FROM 句にある場合に MySQL テーブルの重複行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。