代码之家  ›  专栏  ›  技术社区  ›  Mendelsohn

代码学院SQL表转换课程

  •  1
  • Mendelsohn  · 技术社区  · 8 年前

    这个问题来自 SQL 代码学院的表转换课程。我很想知道以下两个查询之间的区别,以及为什么结果集显示不同的答案:

    enter image description here

    1 回复  |  直到 8 年前
        1
  •  2
  •   Tim Biegeleisen    8 年前

    这里的问题是 airports.code 可能有重复项。在这种情况下,从 flights airports 表中的记录可能会导致重复的行 航班 可以匹配中的多个记录 机场

    如果字段 机场。密码 是不同的,即该列中没有重复项,那么两个查询将返回相同数量的结果。考虑以下示例数据:

    航班:

    origin
    1
    2
    3
    

    机场:

    code
    1
    1
    2
    3
    

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