SQL Server 2000.单个表包含一个用户列表,其中包含唯一的用户ID和非唯一的用户名。
我想搜索表并列出共享相同非唯一用户名的所有用户。例如,我的表看起来像这样:
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大师。我可以做基本的连接等,但我认为必须有一种优雅的方式来做到这一点。除了优雅,必须有任何方法来做到这一点。
我感谢您在此主题上可以帮助我的任何方法。谢谢! --- ---丹
答案 0 :(得分:1)
单程
select t1.* from Table t1
join(
select username from Table
group by username
having count(username) >1) t2 on t1.username = t2.username
答案 1 :(得分:0)
我能想到的最简单的方法是使用子查询:
select * from username un1 where exists
(select null from username un2
where un1.user_name = un2.user_name and un1.id <> un2.id);
答案 2 :(得分:0)
子查询选择具有该名称的&gt; 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
答案 3 :(得分:0)
您可以尝试以下操作:
SELECT *
FROM dbo.Person as p1
WHERE
(SELECT COUNT(*) FROM dbo.Person AS p2 WHERE p2.UserName = p1.UserName) > 1;