2017-05-16 5 views
0

Iは、従来のテーブルを持っている:私のデータベース(SQL-Server)の学生は、以下のように:ジョン・ドウやジェーン・ドウの場合のように私のテーブル内の重複を持つことが期待されている同じテーブル内の同じIDを共有する異なるエントリを返すにはどうすればよいですか?

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

。私はそれを重複データとして扱うことは望ましくない。私が避けたいのは、実際には異なる学生が同じ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) 
関連する問題