我有一张包含学生证和学生姓名的表格。向学生分配唯一的学生ID存在问题,因此我想找到重复的
以下是样本表:
Student ID Student Name
1 Jack
1 John
1 Bill
2 Amanda
2 Molly
3 Ron
4 Matt
5 James
6 Kathy
6 Will
这里我想要第三列“Duplicate_Count”来显示重复记录的数量。 对于例如对于学生ID = 1,“Duplicate_Count”将显示“3”,依此类推。我怎么能这样做?
提前致谢
答案 0 :(得分:2)
Select StudentId, Count(*) DupCount
From Table
Group By StudentId
Having Count(*) > 1
Order By Count(*) desc,
答案 1 :(得分:1)
Select
aa.StudentId, aa.StudentName, bb.DupCount
from
Table as aa
join
(
Select StudentId, Count(*) as DupCount from Table group by StudentId
) as bb
on aa.StudentId = bb.StudentId
虚拟表提供每个StudentId的计数,这将连接回原始表,以将计数添加到每个学生记录。
如果要向表中添加一列以保存dupcount,可以在update语句中使用此查询来更新表中的该列
答案 2 :(得分:1)
这应该有效:
update mytable
set duplicate_count = (select count(*) from mytable t where t.id = mytable.id)
更新:
正如@HansUp所提到的,添加一个带有重复计数的新列可能没有意义,但这实际上取决于OP最初想到的用于它的内容。我将离开答案以防其他人帮忙。