在多表中查找重复项

时间:2018-02-22 18:12:30

标签: sql-server

我们有4张桌子 学生,学校,地点和学生学校 学生可以拥有相同的名字,但他们是不同的人 每个学生只能在一所学校,每所学校都在一个地方 enter image description here

我们发现同一个学生位于两个不同的学校

enter image description here

在此示例中,带有Id'1'的“Adam Mike”位于不同地点的2所不同学校。

如何找到位于2所不同学校的所有学生的名单?

2 个答案:

答案 0 :(得分:1)

您只需要搜索一个表

select student_id 
  from school_student 
 group by student_id
having count(*) > 1

答案 1 :(得分:0)

在结果中,按名称(SQL中为group by)对学生进行分组,在组中生成他们的计数(在SQL中为count(*)),然后仅过滤那些有计数>的人。 1(SQL中为having count(*) > 1)。

我不知道如何在查询构建工具中表达它,但它必须支持它。

请注意,此类分组会丢失ID和学校名称;您将不得不使用名称再次查询它们。