Sql 为什么从多个没有联接的表中选择

Sql 为什么从多个没有联接的表中选择,sql,Sql,在连接表时,传统上可以使用SQL89连接方式 SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id; 但是自从SQL92标准以来,我们现在可以使用连接语法进行连接 SELECT * FROM t1 JOIN t2 on t1.id=t2.t1_id; 是否有人会从多个表中选择而不加入? 现在,我知道人们使用UNION连接数据,但这不是我要说的 我们在FROM子句中添加带有逗号的表的原因是为了向后兼容吗?或者有没有任何现实的场景,使用旧的语法只进行连接是不可能

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

SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id;
但是自从SQL92标准以来,我们现在可以使用连接语法进行连接

SELECT * FROM t1 JOIN t2 on t1.id=t2.t1_id;
是否有人会
从多个表中选择
而不加入?
现在,我知道人们使用
UNION
连接数据,但这不是我要说的


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

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

如果出于某种原因需要完整的笛卡尔乘积,它可能会很有用。例如,如果您有一个汽车模型表和一个汽车颜色表,并且您想要枚举所有选项,那么您就不需要联接。
也就是说,我认为这是一个边缘案例。 为什么我们要使用乘法,而我们可以使用和的循环?不管怎样,+1可能重复的
,有人会从多个表中选择而不加入吗?
也许他们想要笛卡尔乘积?在现实情况下,您不会将旧语法与
一起使用。新语法在我所能想到的各个方面(可读性、可维护性、外部连接的可表达性)都有了改进。但是,标准中仍然支持旧语法以实现向后兼容。我从未见过旧语法中的SQL语句不能用ANSI-92语法更清晰地表达。我发现将连接条件与谓词分离会使调试变得更加简单。我认为这可以通过
完全外部连接来完成。我想你是对的,我只是在考虑使用“from table1,table2”语法。我认为一个外部连接或交叉连接也会更清晰。hi@KirkBackus-FYI
完全外部连接=笛卡尔积。