gpt4 book ai didi

sql - "table A left outer join table B ON TRUE"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 05:51:00 24 4
gpt4 key购买 nike

我知道条件用于表连接。但是我遇到了一个特定的情况,SQL代码写成“Table A join table B ON TRUE

基于“ON TRUE”条件会发生什么?这只是一个没有任何条件选择的完全交叉连接吗?

其实,原来的表达是这样的:

Table A LEFT outer join table B on TRUE

假设 A 有 m 行,B 有 n 行。 “左外连接”和“真实”之间是否有任何冲突?因为它似乎“正确”导致交叉连接。

根据我的猜测,结果将是 m*n 行。所以,它不需要写“左外连接”,只需一个“连接”就会给出相同的输出,对吗?

最佳答案

是的。这与 CROSS JOIN 相同.

在 MySQL 中,我们可以省略 [可选] CROSS关键字。我们也可以省略 ON条款。
ON中的条件子句被评估为一个 bool 值,所以我们也可以写一些类似 ON 1=1 的东西。 .

更新:

(该问题已编辑,添加另一个关于 a LEFT [OUTER] JOIN b 的问题,与原始结构不同: a JOIN b )

LEFT [OUTER] JOIN ”略有不同,即使在右侧表中找不到匹配的行,也会返回左侧表中的行。

如前所述,CROSS JOIN表之间 (包含 m 行)和表 b 包含 n 行,没有任何其他谓词,将产生 m x n 行的结果集。
LEFT [OUTER] JOIN在表 的特殊情况下将产生不同的结果集b 包含 0 行。

CREATE TABLE a (i INT);
CREATE TABLE b (i INT);
INSERT INTO a VALUES (1),(2),(3);

SELECT a.i, b.i FROM a LEFT JOIN b ON TRUE ;

请注意,即使表 b 包含 0 行,LEFT JOIN 也会从表 a(总共 m 行)返回行。

关于sql - "table A left outer join table B ON TRUE"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21520048/

24 4 0