我有一个遗留表:我的数据库(SQL-Server)中的学生如下:
STUDENTID - SURNAME - FORENAME
DJ1 Doe John
DJ1 Doe John
DJ2 Doe Jane
DJ2 Doe Jane
DJ1 Dark Odin
AS1 Tom Layton
....
预计会在我的桌子上出现重复,例如John Doe或Jane Doe 。我不希望将其视为重复数据。我想要避免的是让不同的学生分享同一个STUDENTID
(例如Odin Dark和John Doe)。
如何创建一个查询,返回具有不同名称的学生共享相同的STUDENTID
?
所以我的查询将返回如下内容:
ID - Surname - Forname
DJ1 Doe John
DJ1 Dark Odin
提前致谢。
答案 0 :(得分: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
答案 1 :(得分: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)