加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 什么意思“表A左外连接表B ON TRUE”?

发布时间:2020-12-12 06:30:28 所属栏目:MsSql教程 来源:网络整理
导读:我知道条件用于表连接.但我遇到了一个特定的情况,并且SQL代码写得像“表A连接表B ON TRUE” 基于“ON TRUE”条件会发生什么?这只是一个没有任何条件选择的完全交叉连接? 实际上,原来的表达方式如下: Table A LEFT outer join table B on TRUE 假设A有m行,B
我知道条件用于表连接.但我遇到了一个特定的情况,并且SQL代码写得像“表A连接表B ON TRUE”

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

实际上,原来的表达方式如下:

Table A LEFT outer join table B on TRUE

假设A有m行,B有n行. “left outer join”和“on true”之间是否存在冲突?因为看起来“真实”的结果是交叉连接.

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

谢谢!!!

解决方法

是.这与CROSS JOIN相同.

在MySQL中,您实际上可以省略CROSS关键字以及ON子句.

ON子句中的谓词只是作为布尔值计算,所以它也可以写成例如如ON 1 = 1.

更新:

(注意:问题被编辑,添加关于LEFT [OUTER] JOIN b的问题而不是原始的qestion:a JOIN b)

“LEFT [OUTER] JOIN”略有不同,因为右表中没有匹配的行,左侧表格中的行将是偶数.

如您所知,表a(包含m行)和包含n行的表b之间的CROSS JOIN(没有任何其他谓词)将生成m * 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行).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读