在 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中文网其他相关文章!