识别错误的数据

时间:2018-02-22 19:53:02

标签: sql sql-server

我们在其中一个表中发现了错误的数据,我们希望识别它们。

我们有4张桌子:

  • 学生
  • 学校
  • School_Student
  • 位置

它们之间的关系如下

  • 每个地点都有很多学校
  • 每个学生可以在同一地点的不同学校

enter image description here

由于一些学生的名字不同,虽然他们是不同身份的不同人,但我们发现有些学生被分配到不同地点的不同学校

enter image description here

你可以在屏幕截图中看到“Adam Mike”被分配到3个不同的学校,第二和第三行都可以,因为学校的位置是相同的但是第一行不合适因为学校在不同的位置。

所以我希望有一个查询返回分配到不同位置的所有学生,以便我可以手动纠正它们。

谢谢

修改

在我的上一个问题Find duplication in multi tables 学生不能在不同的学校。

更清楚。

enter image description here

在此屏幕截图中,您会看到所有带“?”的记录不正确,因为位置不同。 所以迈克不能在美国和英国的学校 另一方面,JIM在不同的学校,但在同一地点,所以这是好的 现在我想查找学生在不同地点有记录的所有记录。

1 个答案:

答案 0 :(得分:1)

尝试类似的东西。它返回具有多个唯一位置的学生。

SELECT ss.student_id
FROM school s
JOIN school_student ss
  ON s.id = ss.school_id
GROUP BY ss.student_id
HAVING COUNT(DISTINCT s.location_id) > 1