答案 0 :(得分:2)
这里的问题是airports.code
可能有重复。在这种情况下,从flights
到airports
表的加入可能会导致重复的行,因为来自flights
的记录可以匹配airports
中的多个记录。
如果字段airports.code
不同,即该列中没有重复项,则两个查询都会返回相同数量的结果。请考虑以下示例数据:
航班:
origin
1
2
3
机场:
code
1
1
2
3
应该很清楚,WHERE IN
查询(第一个)只返回三个记录,每个origin
值一个。但是连接的第二个查询实际上会返回四个记录,因为origin=1
会将两次与code=1
匹配。