识别多列中的重复记录
提出的挑战是复制所提供的 SQL 代码的功能,旨在识别和检索基于两列(即“名称”和“城市”)组合的重复记录。目标是排除只有一列(“名称”或“城市”)匹配的情况,并且仅考虑两列相同的记录。
为了满足此要求,提供的答案利用子查询来计数“stuff”表中“name”和“city”组合的出现次数。此子查询对按“name”和“city”分组的行进行计数,并过滤掉那些计数大于 1 的组合(表示重复项)。
select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1
然后主查询连接原始“stuff”表与子查询结果匹配“名称”和“城市”。此连接操作有效地识别满足指定条件的重复记录。最终结果通过排除只有一列匹配的情况来消除误报。
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
因此,查询成功检索所需的输出:
id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris
此方法提供了一种高效的方法基于多列识别重复记录的通用解决方案,确保查询结果的准确性和完整性。
以上是SQL中如何根据多列高效识别重复记录?的详细内容。更多信息请关注PHP中文网其他相关文章!