如何在具有多个列ID,COL1,COL2和COL3的表中查找重复项

时间:2017-03-12 05:54:55

标签: sql duplicates

我们如何在表中找到包含多个列的重复行,例如 表是 Table 1

EMPID   FNAME   LNAME
 1      VIKAS   AHLAWAT
 1      VIKAS   AHLAWAT
 2      NIKITA  JAIN
 3      ASHISH  KUMAR
 4      NIKHIL  SHARMA
 5      ANISH   KADIAN
 6      ANISH   KADIAN

和预期结果应如下所示

EMPID   FNAME   LNAME
1       VIKAS   AHLAWAT
1       VIKAS   AHLAWAT
5       ANISH   KADIAN
6       ANISH   KADIAN

Table 2

2 个答案:

答案 0 :(得分:0)

基于聚合的解决方案适用于所有数据库:

select t1.*
from your_table t1
join (
    select fname, lname
    from your_table
    group by fname, lname
    having count(*) > 1
    ) t2 on t1.lname = t2.lname
    and t1.fname = t2.fname

如果您使用的是支持窗口功能的数据库,则可以使用:

select empid, fname, lname
from (
    select t.*, count(*) over (partition by fname, lname) cnt
    from your_table t
    ) t
where cnt > 1

如果你只想要多次出现的名字(而不是他们的主张):

select fname, lname
from your_table
group by fname, lname
having count(*) > 1

答案 1 :(得分:0)

此查询将显示所需的结果。

select count(empid) cnt, 
        empid,
        fname, 
        lname
  from table_1
 group by fname, lanem
 having count(empid) > 1
order by 1 desc