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

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

DDD
リリース: 2024-11-01 11:15:30
オリジナル
364 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート