12

连接表时,传统上可以使用 SQL89 连接方式,例如

SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id;

但是由于 SQL92 标准,我们现在可以使用 JOIN 语法进行连接

SELECT * FROM t1 JOIN t2 on t1.id=t2.t1_id;

有什么理由为什么有人会SELECT从多个表中加入而不加入?现在,我知道人们使用 连接数据UNION,但这不是我要说的。

FROM我们在子句中添加带有逗号的表的原因是为了向后兼容吗?或者是否有任何现实场景使用旧语法仅通过连接是不可能的?

4

2 回答 2

7

如果您出于某种原因需要完整的笛卡尔积,它可能会很有用。例如,如果您有一个汽车型号表和一个汽车颜色表,并且您想枚举所有选项,则您不需要连接。话虽如此,我会认为这是一个边缘案例。

于 2013-07-12T15:06:52.700 回答
4

我承认肌肉记忆会发挥作用,有时我会在思考之前使用 89 方式。但我更喜欢 92 方法,因为它使 WHERE 子句更清晰。WHERE 子句中的唯一条件是与您的业务案例相关的条件,而仅用于定义关系的标准则整齐地在 JOIN 子句中。

于 2013-07-12T15:05:10.637 回答