2010-06-10 63 views
1

SQL Server 2000.單表具有包含唯一用戶標識和非唯一用戶名的用戶列表。T-SQL如何:比較和列出表中的重複條目

我想搜索表並列出共享相同的非唯一用戶名的任何用戶。例如,我的表是這樣的:

ID User Name Name 
== ========= ==== 
0 parker  Peter Parker 
1 parker  Mary Jane Parker  
2 heroman  Joseph (Joey) Carter Jones 
3 thehulk  Bruce Banner 

我想要做的就是做一個SELECT並有結果集是:從我的表

ID User Name Name 
== ========= ==== 
0 parker  Peter Parker 
1 parker  Mary Jane Parker 

我不是T-SQL專家。我可以做基本的連接等,但我認爲必須有一個優雅的方式來做到這一點。除了優雅之外,一定有任何這樣做的方式。

我很欣賞任何可以幫助我處理這個主題的方法。謝謝! ---丹---

回答

1

一種方式

select t1.* from Table t1 
join(
select username from Table 
group by username 
having count(username) >1) t2 on t1.username = t2.username 
0

我能想到的最簡單的方式是使用一個子查詢:

select * from username un1 where exists 
(select null from username un2 
where un1.user_name = un2.user_name and un1.id <> un2.id); 
0

子查詢選擇所有具有該名稱的行數大於1的名稱...外部查詢選擇與這些ID匹配的所有行。

SELECT T.* 
FROM T 
    , (SELECT Dupe_candidates.USERNAME 
     FROM  T AS Dupe_candidates 
     GROUP BY Dupe_candidates.USERNAME 
     HAVING count(*)>1 
    ) Dupes 
WHERE T.USERNAME=Dupes.USERNAME 
0

你可以嘗試以下方法:

SELECT * 
FROM dbo.Person as p1 
WHERE 
(SELECT COUNT(*) FROM dbo.Person AS p2 WHERE p2.UserName = p1.UserName) > 1;