複数の列の重複値の検索
SQL コードでは、特定の基準に基づいて重複レコードを識別しようとします。これを実現するには、グループ化と条件付きフィルタリングを組み合わせて利用できます。
ここで提供した例は、name 列と city 列の両方に一致する重複レコードを検索することを目的としています。ただし、元のクエリには少し問題があります。名前または都市の両方が完全に一致する必要はなく、名前または都市のみが一致するレコードも含まれています。
この問題を解決するには、次のようにクエリを変更します。
SELECT s.id, t.* FROM [stuff] s JOIN ( SELECT name, city, COUNT(*) AS qty FROM [stuff] GROUP BY name, city HAVING COUNT(*) > 1 ) t ON s.name = t.name AND s.city = t.city
このクエリは、[stuff] テーブルを、名前と都市の値の一意のペアごとに重複レコードの数を計算するサブクエリと結合します。カウントが 1 より大きいグループのみを含むように HAVING 句を設定すると、結果を実際の重複を表す行に制限できます。
このクエリの出力は、目的の結果と一致する必要があります:
id | name | city |
---|---|---|
904834 | jim | London |
904835 | jim | London |
90145 | Fred | Paris |
90132 | Fred | Paris |
90133 | Fred | Paris |
以上がSQL の複数の列にわたって完全に重複するレコードを見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。