我有一张表,上面有学生证和学生姓名。在为学生分配唯一的学生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“来显示重复记录的计数。例如"Duplicate_Count“将为学生ID =1显示"3”,依此类推。我该怎么做呢?
提前感谢
发布于 2011-10-06 03:18:21
Select StudentId, Count(*) DupCount
From Table
Group By StudentId
Having Count(*) > 1
Order By Count(*) desc, 发布于 2011-10-06 03:22:57
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语句中使用此查询来更新表中的该列
发布于 2011-10-06 03:23:56
这应该是可行的:
update mytable
set duplicate_count = (select count(*) from mytable t where t.id = mytable.id)更新:
正如@HansUp所提到的,添加一个带有重复计数的新列可能没有意义,但这实际上取决于OP最初考虑使用它的用途。我把答案留下来,以防对别人有帮助。
https://stackoverflow.com/questions/7666439
复制相似问题