T-SQL วิธีการ: เปรียบเทียบและแสดงรายการรายการที่ซ้ำกันในตาราง

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 ฉันสามารถทำการรวมขั้นพื้นฐานได้ แต่ฉันคิดว่าจะต้องมีวิธีที่สง่างามในการทำเช่นนี้ นอกจากความสง่างามแล้ว จะต้องมีวิธีใดๆ ในการทำเช่นนี้

ฉันขอขอบคุณวิธีการใด ๆ ที่คุณสามารถช่วยฉันได้ในหัวข้อนี้ ขอบคุณ! ---แดน---


person Dan7el    schedule 10.06.2010    source แหล่งที่มา


คำตอบ (4)


ทางเดียว

select t1.* from Table t1
join(
select username from Table
group by username
having count(username) >1) t2 on t1.username = t2.username
person SQLMenace    schedule 10.06.2010

วิธีที่ง่ายที่สุดที่ฉันคิดได้คือใช้แบบสอบถามย่อย:

select * from username un1 where exists
(select null from username un2 
where un1.user_name = un2.user_name and un1.id <> un2.id);
person Community    schedule 10.06.2010

แบบสอบถามย่อยเลือกชื่อทั้งหมดที่มี >1 แถวที่มีชื่อนั้น... แบบสอบถามภายนอกจะเลือกแถวทั้งหมดที่ตรงกับรหัสเหล่านั้น

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
person DVK    schedule 10.06.2010

คุณสามารถลองทำสิ่งต่อไปนี้:

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