SQL テーブル内の複数の列で重複する値を検索します
GROUP BY
句を使用した標準的なアプローチは、単一列内の重複値を効果的に識別します。しかし、名前やメールアドレスなど、複数の列で重複を検索する必要がある場合はどうすればよいでしょうか?
この問題を解決するには、GROUP BY
句を拡張して、関連するすべての列を含めます。
<code class="language-sql">SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1</code>
このクエリは、名前と電子メールでグループ化することにより、これら 2 つの列の組み合わせの重複を効果的に特定します。
注: データベース システムが異なれば、この構文のサポートも異なる場合があります。一部の古いバージョンの SQL データベースでは、すべての非集計列を GROUP BY
句に含める必要があります。ただし、PostgreSQL や MySQL などの最新のデータベース エンジンは、非集計列でのグループ化をサポートしていることがよくあります。
関数の依存関係ルールが適用されることに注意してください。つまり、グループ化に使用される列は相互に強い関係を持つ必要があります。関係が弱い場合、予期せぬ結果が生じる可能性があります。
異なるデータベース システム間で一貫した動作を確保するには、すべての非集計列を GROUP BY
句に含めるか、実装の詳細について特定のデータベースのドキュメントを参照することをお勧めします。
以上がSQL テーブル内の複数の列にまたがる重複行を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。