显示具有重复某些列的所有行 [英] Show all rows that have certain columns duplicated

查看:7
本文介绍了显示具有重复某些列的所有行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有以下SQL表

    objid  firstname lastname active
     1       test      test     0
     2       test      test     1
     3       test1     test1    1
     4       test2     test2    0
     5       test2     test2    0
     6       test3     test3    1

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

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

我如何才能做到这一点? 我尝试了以下查询,

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

但此查询得到的结果如下

    firstname  lastname
     test        test
     test2       test2

推荐答案

您已找到重复的记录,但您有兴趣获得附加到这些记录的所有信息。您需要将副本join复制到主表才能获取该信息。

select *
  from my_table a
  join ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 ) b
    on a.firstname = b.firstname
   and a.lastname = b.lastname

这与inner join相同,这意味着对于子查询中的每条记录,找到重复记录后,您将从主表中找到具有相同的第一次查看和最后一次查看组合的所有内容。

您也可以使用in,though you should test the difference

来执行此操作
select *
  from my_table a
 where ( firstname, lastname ) in   
       ( select firstname, lastname 
           from my_table 
          group by firstname, lastname 
         having count(*) > 1 )

进一步阅读:

这篇关于显示具有重复某些列的所有行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆