ホームページ > データベース > mysql チュートリアル > 主キーのない SQL テーブルから重複行を削除するにはどうすればよいですか?

主キーのない SQL テーブルから重複行を削除するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-03 02:35:39
オリジナル
343 人が閲覧しました

How to Remove Duplicate Rows from a SQL Table Without a Primary Key?

主キーのない SQL テーブルから重複レコードを削除する方法

主キーのない SQL テーブルを扱う場合、重複を処理する記録は課題を引き起こす可能性があります。ただし、特定の基準に基づいて重複を排除する効率的な方法があります。

次のシナリオを考えてみましょう。列「EmpId」、「EmpName」、「EmpSSN」といくつかのレコードを含む「employee」テーブルがあるとします。 「EmpId」フィールドと「EmpSSN」フィールドに重複した値が含まれています。これらの重複を削除するには、次のクエリを利用できます:

DELETE SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
 FROM employee) SUB
WHERE SUB.cnt > 1
ログイン後にコピー

クエリの理解:

  • 外側の DELETE ステートメントは、'employee' から行を削除します。 ' サブクエリから取得した情報に基づいてテーブルを作成します。
  • サブクエリは行を計算します'EmpId'、'EmpName'、'EmpSSN' の一意の組み合わせごとに count (cnt) を計算します。
  • PARTITION BY 句はこれらのフィールドでレコードをグループ化し、個別のグループごとに行数がリセットされるようにします。
  • ORDER BY 句は各グループ内のレコードを並べ替えて、最初の行が元の行であることを確認します。 Record.
  • サブクエリの WHERE 句は、cnt が 1 より大きい行をフィルタリングして、それらが重複していることを示します。
  • 次に、外側の DELETE ステートメントは、FROM 句を使用してサブクエリを次のように参照します。仮想テーブル (SUB) を作成し、メインの「従業員」からそれらの行を削除します。 table.

このクエリは、「EmpId」と「EmpSSN」の一意の組み合わせに基づいて重複レコードを効果的に削除し、主キーなしでテーブル内のデータ クリーンアップを効率的に実行します。

以上が主キーのない SQL テーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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