写一个查询来识别差异

时间:2011-10-05 19:15:18

标签: sql ms-access

我有一张包含学生证和学生姓名的表格。向学生分配唯一的学生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”,依此类推。我怎么能这样做?

提前致谢

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最初想到的用于它的内容。我将离开答案以防其他人帮忙。