ホームページ >データベース >mysql チュートリアル >SQL の複数のフィールドにわたる重複レコードを検索するにはどうすればよいですか?
SQL の複数のフィールドを使用した重複エントリの特定
単一列内の重複エントリを見つけるにはすぐに利用できる方法が存在しますが、複数のフィールドにわたる重複エントリを特定するには、少し異なるアプローチが必要です。 一致する電子メール アドレス と の名前に基づいて重複レコードを見つけるシナリオを考えてみましょう。
この解決策には、標準 SQL クエリの変更が含まれます。
<code class="language-sql">SELECT name, email, COUNT(*) AS DuplicateCount FROM users GROUP BY name, email HAVING DuplicateCount > 1</code>
name
と email
の両方を使用して結果をグループ化することで、名前とメールの個別の組み合わせごとに一意の識別子を作成します。 次に、COUNT(*)
関数は、各一意の識別子の出現数を集計します。 HAVING
句はこれらの集計結果をフィルタリングして、複数回出現する組み合わせのみを返し、重複レコードを効果的に特定します。
この手法は、関数の依存関係の原則に基づいており、1 つのフィールドの値は、指定された他のフィールドの値によって決定されます。 これにより、集計関数に直接関与しないフィールドによるグループ化が可能になります。
重要な注意: データベース システムの互換性は非常に重要です。このクエリは PostgreSQL や MySQL などのデータベースでは正しく機能しますが、SQL Server では、すべての非集計列を GROUP BY
句内に明示的に含める必要がある場合があります。 Oracle およびその他のデータベース システムにも固有の要件がある場合があります。 互換性と正しい実装を確認するには、必ずデータベース システムのドキュメントを参照してください。
以上がSQL の複数のフィールドにわたる重複レコードを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。