MySQL テーブルからの重複行の削除
大規模なデータセットを操作する場合、重複レコードを特定して削除することが不可欠です。このガイドでは、empid、empname、empssn の 3 つのフィールドで構成される「employee」という名前の MySQL テーブルから重複行を削除するための包括的なソリューションを提供します。
重複レコードの特定
重複レコードを特定するには、次のクエリを使用できます。
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
このクエリは、一意の empssn ごとの出現回数を返します。 HAVING 句は、カウントが 1 より大きい行をフィルタリングして、重複する empssn 値を効果的に特定します。
重複レコードの削除
重複レコードを削除するには、次のクエリ:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
ただし、ターゲット テーブル ("employee") が DELETE 句とサブクエリの FROM 句の両方で指定されている場合、MySQL はエラーをスローします。これを解決するには、次のようにサブクエリを派生テーブルでラップします。
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
この変更されたクエリは、ターゲット テーブルの競合を回避しながら重複レコードを効果的に削除します。その結果、データベースには、一意の empssn 値ごとに最小の empid を持つレコードのみが保持されます。
以上がMySQL テーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。