2017-05-16 1 views
0

Ich habe ein Vermächtnis Tabelle: Die Schüler in meiner Datenbank (SQL-Server) wie folgt:Wie gebe ich verschiedene Einträge zurück, die dieselbe ID in derselben Tabelle haben?

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

Es wird erwartet, dass Doppelarbeit in meinem Tisch haben, wie im Fall von John Doe oder Jane Doe. Ich möchte das nicht als doppelte Daten behandeln. Was ich vermeiden möchte, ist, dass ich verschiedene Schüler habe, die denselben STUDENTID teilen (z. B. Odin Dark und John Doe). Wie erstelle ich eine Abfrage, die den Schüler mit einem anderen Namen mit der gleichen STUDENTID zurückgeben?

So Meine Suche wird so etwas wie diese zurückgeben:

ID - Surname - Forname 
DJ1 Doe  John 
DJ1 Dark  Odin 

Vielen Dank im Voraus.

+1

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

+0

@JacobH warum schlagen Sie nicht, dass dies ein Duplikat ist, und Ihr Link posten als Antwort? – Eli

+0

Mögliches Duplikat von [Doppelte Werte in einer SQL-Tabelle finden] (http://stackoverflow.com/questions/2594829/finding-duplicate-values-in-a-sql-table) –

Antwort

0

Hier gehen Sie. Nicht die schönste Abfrage, aber es bringt Ihnen die Daten, die Sie suchen, denke ich.

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

verschiedene Namen mit der gleichen ID können mit dieser Abfrage gefunden werden. Es werden die doppelten Datensätze nicht angezeigt.

select distinct s1.* 
from students s1 
join students s2 on s1.studentid = s2.studentid and (s1.surname <> s2.surname or s1.forename <> s2.forename) 
Verwandte Themen