ホームページ  >  記事  >  データベース  >  ターゲットテーブルが FROM 句にある場合に MySQL テーブルの重複行を削除する方法

ターゲットテーブルが FROM 句にある場合に MySQL テーブルの重複行を削除する方法

DDD
DDDオリジナル
2024-11-01 11:15:30281ブラウズ

How to Delete Duplicate Rows in a MySQL Table When the Target Table is in the FROM Clause?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。