如何跨多个列查找重复项?

新手上路,请多包涵

所以我想在下面做这样的 sql 代码:

 select s.id, s.name,s.city
from stuff s
group by s.name having count(where city and name are identical) > 1

要生成以下内容,(但忽略只有名称或只有城市匹配的地方,它必须在两列上):

 id      name  city
904834  jim   London
904835  jim   London
90145   Fred  Paris
90132   Fred  Paris
90133   Fred  Paris

原文由 NimChimpsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 232
2 个回答

重复 idnamecity

 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

原文由 Michał Powaga 发布,翻译遵循 CC BY-SA 3.0 许可协议

很高兴使用 Cross Apply 添加另一种实现所需输出的方法,如下所示:

 select s.* from stuff s
cross apply(
    select name, city from stuff
    group by name, city
    having Count(*) > 1) x
where s.name = x.name and s.city=x.city

原文由 Md. Suman Kabir 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进