ホームページ >データベース >mysql チュートリアル >SQL テーブル内の複数のフィールドに基づいて重複行を見つける方法
SQL の複数のフィールドを使用した重複レコードの検索
単一の列に基づいて重複エントリを特定するのは、単純な SQL タスクです。 たとえば、users
テーブルで重複するメールを検索するには:
<code class="language-sql">SELECT email, COUNT(email) FROM users GROUP BY email HAVING COUNT(email) > 1;</code>
メールアドレスや名前など、複数のフィールドにわたる重複を特定する場合、複雑さが増します。
メールアドレスと名前の組み合わせが同一の行を特定するには、次のクエリを使用します。
<code class="language-sql">SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1;</code>
これは、name
と email
の両方でデータをグループ化し、複数のエントリを持つグループのみを表示するようにフィルター処理して、重複を明らかにします。
仕組み:
HAVING
句は重要です。グループ化された結果をフィルター処理して、複数回出現する name
と email
の組み合わせのみが返されるようにします。 一般的な出力は次のようになります:
<code>| name | email | COUNT(*) | |------|-------------|----------| | Tom | john@example.com | 2 | | Tom | tom@example.com | 2 |</code>
重要な考慮事項:
データベース システムでは、非集計列のグループ化の処理が異なります。 一部の場合は、GROUP BY
句に明示的に含める必要があります。 データベース システムがこの暗黙的なグループ化をサポートしていない場合は、それに応じてクエリを調整する必要があります。
以上がSQL テーブル内の複数のフィールドに基づいて重複行を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。