这个问题来自 SQL 代码学院的表转换课程。我很想知道以下两个查询之间的区别,以及为什么结果集显示不同的答案:
SQL
这里的问题是 airports.code 可能有重复项。在这种情况下,从 flights 到 airports 表中的记录可能会导致重复的行 航班 可以匹配中的多个记录 机场 。
airports.code
flights
airports
航班
机场
如果字段 机场。密码 是不同的,即该列中没有重复项,那么两个查询将返回相同数量的结果。考虑以下示例数据:
机场。密码
航班:
origin 1 2 3
机场:
code 1 1 2 3
应该清楚的是 WHERE IN 查询(第一个)将只返回三条记录,每个记录一条 origin 价值但是第二个带有连接的查询实际上会返回 四 记录,自 origin=1 将匹配 两次 到 code=1 。
WHERE IN
origin
origin=1
code=1