代码之家  ›  专栏  ›  技术社区  ›  오준후

为什么LEFT INNER JOIN被弃用?

  •  1
  • 오준후  · 技术社区  · 5 月前

    我想问一下为什么 LEFT INNER JOIN 已弃用。据我所知,join语法首先指定了驱动表(使用 LEFT RIGHT ),然后是join方法( INNER OUTER ).

    那么,为什么 左内连接 删除或不再推荐?

    1 回复  |  直到 5 月前
        1
  •  5
  •   Joel Coehoorn    5 月前

    据我所知,join语法首先指定了驱动表

    我将允许在构建查询时以这种方式思考通常是有用的。然而,事实是INNER JOIN根本没有真正的“驾驶台”。无论从左侧还是右侧开始,结果都是一样的,数据库将使用它发现更有效的一侧作为起点。因此,从功能的角度来看,左与右实现了 没有什么 ,我认为大多数数据库类型根本不允许INNER JOIN使用LEFT和RIGHT。

    更糟糕的是,从句法的角度来看,允许它可能会造成混淆。如果使用 JOIN 就其本身而言,没有进一步的澄清,我们总是会得到一个INNER JOIN。但是,如果我们说LEFT JOIN或RIGHT JOIN,并省略INNER与OUTER,则连接类型 翻转 ,现在这是一个OUTER连接,尽管我们没有对连接的这一部分指定任何新内容。这很容易让不熟悉的人感到困惑。

    相对于解释(极为常见的)LEFT JOIN简写,允许LEFT INNER JOIN会特别烦人。也就是说,如果INNER JOIN禁止使用LEFT/RIGHT,则可以指定 任何 join类型,在join前面添加一个额外的关键字 完全没有野心 不能被误认为是不同的JOIN:

    内部连接
    左加入
    正确加入
    完全加入
    交叉连接

    通过这两个关键字,你可以准确地知道它是什么样的连接,没有可能的歧义或误解。。。但前提是INNER JOIN不允许使用左右键。虽然它肯定不是通用的,但这种“最小明确文本”的方法正是我认识的大多数人倾向于写他们的JOIN的方式(如果不添加新信息,为什么要在代码中添加“OUTER”来增加额外的噪音呢?)。