为什么 LEFT INNER JOIN 被弃用? [已关闭]

问题描述 投票:0回答:1

为什么

LEFT INNER JOIN
被弃用、删除或不再推荐?

连接语法首先指定驱动表(使用

LEFT
RIGHT
),然后指定连接方法(
INNER
OUTER
)。

sql left-join inner-join outer-join right-join
1个回答
5
投票

据我所知,连接语法首先指定驱动表

我承认在构建查询时以这种方式思考通常很有用。然而,事实是 INNER JOIN 根本没有真正的“驱动表”。无论从左侧还是右侧开始,结果都是相同的,数据库将使用它认为更有效的一侧作为起点。因此,从功能角度来看,对于 INNER JOIN,LEFT 与 RIGHT 没有完成任何事情,而且我认为大多数数据库类型根本不允许对 INNER JOIN 使用 LEFT 与 RIGHT。 更糟糕的是,从句法的角度来看,允许它会造成混乱。如果单独使用

JOIN

,无需进一步说明,我们总是会得到一个 INNER JOIN。但是,如果我们说 LEFT JOIN 或 RIGHT JOIN,并省略 INNER 与 OUTER,则连接类型

flips
,并且现在这是一个 OUTER 连接,即使我们没有另外指定有关该连接部分的任何新内容。这很容易让外行人感到困惑。 相对于解释(极其常见的)LEFT JOIN 简写,允许 LEFT INNER JOIN 会特别烦人。也就是说,如果 INNER JOIN 禁止使用 LEFT/RIGHT,则可以指定

any

连接类型,并在 JOIN 前面添加一个附加关键字,其方式是完全明确并且不会被误认为是不同的 JOIN: 内连接

左连接

正确加入
全面加入
交叉连接

对于其中的每一个,您只需通过两个关键字就可以确切地知道它是什么类型的连接,而不会出现歧义或误解......但前提是 INNER JOIN 不允许使用 LEFT 和 RIGHT。虽然它肯定不是通用的,但这种“最小明确文本”方法正是我认识的大多数人倾向于编写 JOIN 的方式(如果它不添加新信息,为什么要通过包含“OUTER”来向代码添加额外的噪音?)。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.