在多列中查找重复值
在 SQL 代码中,您寻求根据特定条件识别重复记录。为此,您可以结合使用分组和条件过滤。
您提供的示例旨在查找与名称和城市列匹配的重复记录。但是,您的原始查询有一个小问题:它还包含仅名称或城市匹配的记录,而不是要求两者完全匹配。
要解决此问题,您可以按如下方式修改查询:
SELECT s.id, t.* FROM [stuff] s JOIN ( SELECT name, city, COUNT(*) AS qty FROM [stuff] GROUP BY name, city HAVING COUNT(*) > 1 ) t ON s.name = t.name AND s.city = t.city
此查询将 [stuff] 表与子查询连接起来,该子查询计算每对唯一的名称和城市值的重复记录计数。通过将 HAVING 子句设置为仅包含计数大于 1 的组,您可以将结果限制为代表实际重复项的行。
此查询的输出应与您所需的结果匹配:
id | name | city |
---|---|---|
904834 | jim | London |
904835 | jim | London |
90145 | Fred | Paris |
90132 | Fred | Paris |
90133 | Fred | Paris |
以上是如何在 SQL 中查找多列中的精确重复记录?的详细内容。更多信息请关注PHP中文网其他相关文章!