sql – 显示所有重复的行

前端之家收集整理的这篇文章主要介绍了sql – 显示所有重复的行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有以下sql
  1. objid firstname lastname active
  2. 1 test test 0
  3. 2 test test 1
  4. 3 test1 test1 1
  5. 4 test2 test2 0
  6. 5 test2 test2 0
  7. 6 test3 test3 1

现在,我感兴趣的结果如下:

  1. objid firstname lastname active
  2. 1 test test 0
  3. 2 test test 1
  4. 4 test2 test2 0
  5. 5 test2 test2 0

我该如何实现?
我已经尝试过以下查询,

  1. select firstname,lastname from table
  2. group by firstname,lastname
  3. having count(*) > 1

但这个查询给出了结果

  1. firstname lastname
  2. test test
  3. test2 test2

解决方法

您已经找到重复的记录,但是您有兴趣获取附加的所有信息.您需要将您的副本加入主表以获取该信息.
  1. select *
  2. from my_table a
  3. join ( select firstname,lastname
  4. from my_table
  5. group by firstname,lastname
  6. having count(*) > 1 ) b
  7. on a.firstname = b.firstname
  8. and a.lastname = b.lastname

这与内部连接相同,意味着对于您的子查询中的每个记录,找到重复记录,您可以从主表中找到具有相同firstseen和lastseen组合的所有内容.

您也可以在though you should test the difference中执行此操作:

  1. select *
  2. from my_table a
  3. where ( firstname,lastname ) in
  4. ( select firstname,lastname
  5. having count(*) > 1 )

进一步阅读:

> A visual representation of joins从编码恐怖
> Join explanation维基百科

猜你在找的MsSQL相关文章