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

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

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-03 13:03:43991ブラウズ

How to Delete Duplicate Records in a SQL Table Without a Primary Key?

主キーなしで SQL テーブルの重複レコードを削除する

主キーがない場合、データベース内の重複レコードを識別するのは困難になる可能性があります。ただし、ウィンドウ関数と論理演算子を組み合わせて使用​​すると、重複を効率的に削除できます。

この例では、目的は、同じ EmpId 値と EmpSSN 値を持つレコードを Employee テーブルから削除することです。これを実現するには:

  1. ROW_NUMBER() 関数を使用して一時列を作成し、EmpId、EmpName、および EmpSSN フィールドによるパーティション分割に基づいて各レコードにカウントを割り当てます。これにより、一意の組み合わせごとに一意のカウントを持つテーブルが作成されます。
ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
  1. カウントが 1 より大きく、重複レコードを示すレコードのみを含むようにテーブルをフィルターするサブクエリを作成します。 .
SELECT SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1
  1. DELETE ステートメントを使用して、重複レコードをサブクエリの結果に基づく従業員テーブル。
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
FROM Employee) SUB
WHERE SUB.cnt > 1

これらの手順に従うと、重複レコードが従業員テーブルから効果的に削除され、主キーを必要とせずにデータの整合性が確保されます。 .

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

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