代码学院的SQL表转换课程

时间:2018-03-29 01:39:05

标签: sql sqlite subquery

这个问题来自Code Academy的SQL表转换课程。我很想知道以下2个查询之间的区别以及结果集显示不同答案的原因:

enter image description here

1 个答案:

答案 0 :(得分:2)

这里的问题是airports.code可能有重复。在这种情况下,从flightsairports表的加入可能会导致重复的行,因为来自flights的记录可以匹配airports中的多个记录。

如果字段airports.code不同,即该列中没有重复项,则两个查询都会返回相同数量的结果。请考虑以下示例数据:

航班:

origin
1
2
3

机场:

code
1
1
2
3

应该很清楚,WHERE IN查询(第一个)只返回三个记录,每个origin值一个。但是连接的第二个查询实际上会返回四个记录,因为origin=1会将两次code=1匹配。