sql:如何查找重复行?

sto*_*ter 0 sql sql-server

我有一个表用户(id,first_name,last_name,...)我想在该表中找到重复的用户(具有相同first_name和相同last_name的用户).

让我们说我的数据是:

 1;bill;campton
 2;sarah;connor
 3;bill;campton
Run Code Online (Sandbox Code Playgroud)

我需要得到

  1;bill;campton;3;bill;campton
Run Code Online (Sandbox Code Playgroud)

我不想得到

  1;bill;campton;3;bill;campton
  3;bill;campton;1;bill;campton
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?我使用SQL Server 2005

谢谢

SQL*_*ace 12

单程

select first_name, last_name
from table
group by first_name, last_name
having count(*) > 1
Run Code Online (Sandbox Code Playgroud)

如果您还想要ID,那么您可以这样做

 SELECT t1.*
 FROM table t1
 join
 (select first_name, last_name
from table
group by first_name, last_name
having count(*) > 1) x ON t1.last_name = x.last_name
AND t1.first_name = x.first_name
Run Code Online (Sandbox Code Playgroud)


Spi*_*man 6

你可以使用:

select u1.id, u2.id, u1.first_name, u1.last_name
from users u1
inner join users u2
on u1.first_name = u2.first_name
and u1.last_name = u2.last_name
where u2.id > u1.id
Run Code Online (Sandbox Code Playgroud)

或者,要获得6行,请使用

select u1.id, u1.first_name, u1.last_name, u2.id, u2.first_name, u2.last_name
Run Code Online (Sandbox Code Playgroud)

等等