ホームページ >データベース >mysql チュートリアル >SQL の複数のフィールドにわたる重複レコードを検索するにはどうすればよいですか?

SQL の複数のフィールドにわたる重複レコードを検索するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-23 02:19:09551ブラウズ

How to Find Duplicate Records Across Multiple Fields in SQL?

SQL の複数のフィールドを使用した重複エントリの特定

単一列内の重複エントリを見つけるにはすぐに利用できる方法が存在しますが、複数のフィールドにわたる重複エントリを特定するには、少し異なるアプローチが必要です。 一致する電子メール アドレス の名前に基づいて重複レコードを見つけるシナリオを考えてみましょう。

この解決策には、標準 SQL クエリの変更が含まれます。

<code class="language-sql">SELECT
    name,
    email,
    COUNT(*) AS DuplicateCount
FROM
    users
GROUP BY
    name,
    email
HAVING 
    DuplicateCount > 1</code>

nameemail の両方を使用して結果をグループ化することで、名前とメールの個別の組み合わせごとに一意の識別子を作成します。 次に、COUNT(*) 関数は、各一意の識別子の出現数を集計します。 HAVING 句はこれらの集計結果をフィルタリングして、複数回出現する組み合わせのみを返し、重複レコードを効果的に特定します。

この手法は、関数の依存関係の原則に基づいており、1 つのフィールドの値は、指定された他のフィールドの値によって決定されます。 これにより、集計関数に直接関与しないフィールドによるグループ化が可能になります。

重要な注意: データベース システムの互換性は非常に重要です。このクエリは PostgreSQL や MySQL などのデータベースでは正しく機能しますが、SQL Server では、すべての非集計列を GROUP BY 句内に明示的に含める必要がある場合があります。 Oracle およびその他のデータベース システムにも固有の要件がある場合があります。 互換性と正しい実装を確認するには、必ずデータベース システムのドキュメントを参照してください。

以上がSQL の複数のフィールドにわたる重複レコードを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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