2017-05-16 113 views
0

我有一箇舊的表:在我的數據庫(SQL-Server)的學生,如下:如何返回在同一個表中共享相同ID的不同條目?

STUDENTID - SURNAME - FORENAME 
DJ1   Doe  John 
DJ1   Doe  John 
DJ2   Doe  Jane 
DJ2   Doe  Jane 
DJ1   Dark  Odin 
AS1   Tom  Layton 
.... 

預計有我的表中複製像李四或Jane Doe的的情況。我不希望這被視爲重複的數據。我想避免的是讓不同的學生分享相同的STUDENTID(例如Odin Dark和John Doe)。 如何創建一個查詢返回不同名稱的學生共享STUDENTID?提前

ID - Surname - Forname 
DJ1 Doe  John 
DJ1 Dark  Odin 

感謝:

,所以我的查詢將返回這樣的事情。

+1

http://stackoverflow.com/questions/2594829/finding-duplicate-values-in-a-sql-table –

+0

@JacobH你爲什麼不認爲這是一個重複,併發布您的鏈接作爲答案? – Eli

+0

[在一個SQL表查找重複的值]的可能的複製(http://stackoverflow.com/questions/2594829/finding-duplicate-values-in-a-sql-table) –

回答

0

在這裏你去。不是最漂亮的查詢,但它讓你獲得我想要的數據。

SELECT * FROM Students s 
JOIN 
(SELECT StudentID, Surname, Forename FROM Students 
GROUP BY StudentID, Surname, Forename 
HAVING COUNT(*) > 1) sub 
ON sub.StudentID = s.StudentID 
WHERE sub.Forename <> s.Forename and sub.Surname <> s.Surname and sub.StudentID = s.StudentID 
0

使用此查詢可以找到具有相同ID的不同名稱。它不會顯示重複記錄。

select distinct s1.* 
from students s1 
join students s2 on s1.studentid = s2.studentid and (s1.surname <> s2.surname or s1.forename <> s2.forename) 
相關問題