我知道条件用于表连接.但我遇到了一个特定的情况,SQL代码写的像" Table A join table B ON TRUE"
基于"ON TRUE"条件会发生什么?这只是一个没有任何条件选择的完全交叉连接?
实际上,原来的表达方式如下:
Table A LEFT outer join table B on TRUE
Run Code Online (Sandbox Code Playgroud)
假设A有m行,B有n行."left outer join"和"on true"之间是否存在冲突?因为看起来"真实"的结果是交叉连接.
根据我的猜测,结果将是m*n行.所以,它没有必要写"左外连接",只是一个"连接"会给出相同的输出,对吧?
谢谢!!!
spe*_*593 10
是.这跟a一样CROSS JOIN.
在MySQL中,您实际上可以省略CROSS关键字以及ON子句.
ON子句中的谓词只是作为布尔值计算,所以它也可以写成例如ON 1=1.
更新:
(请注意:问题是编辑,添加有关的问题a LEFT [OUTER] JOIN b,而不是原来的queestion: a JOIN b)
" LEFT [OUTER] JOIN"略有不同,因为右表中没有匹配的行,左侧表格中的行将是偶数.
如您所知,表a(包含m行)和包含n行的表b之间的CROSS JOIN (没有任何其他谓词)将生成m*n行的结果集.
的CROSS 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 ;
Run Code Online (Sandbox Code Playgroud)
请注意,即使表b包含0行,LEFT JOIN也将返回表a中的行(总共m行).
| 归档时间: |
|
| 查看次数: |
6341 次 |
| 最近记录: |