MySQL 数据库中 left outer join 和 left join 什么区别?

MySQL 数据库中 left outer join 和 left join 什么区别?

数据库
MySQL
postgresql
2022-09-13 13:28:11
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
海因斯DK
3

一个有outer,另一个没有。就这么点区别。
 
 

分享
微博
QQ
微信
回复
2022-09-13 14:58:48
pgdba

​FROM 子句​

​join_type​

  • ​[ INNER ] JOIN​
  • ​LEFT [ OUTER ] JOIN​
  • ​RIGHT [ OUTER ] JOIN​
  • ​FULL [ OUTER ] JOIN​
  • ​CROSS JOIN​

之一。 对于​​INNER​​和​​OUTER​​连接类型,必须指定 一个连接条件,即 ​​NATURAL​​、​​ON ​​join_condition​​​或者 ​​USING (​​join_column​​ [, ...])​​ 之一(只能有一种)。其含义见下文。对于 ​​CROSS JOIN​​,上述子句不能出现。

一个​​JOIN​​子句联合两个​​FROM​​项( 为了方便我们称之为“表”,尽管实际上它们可以是任何类型 的​​FROM​​项)。如有必要可以使用圆括号确定嵌套的顺序。 在没有圆括号时,​​JOIN​​会从左至右嵌套。在任何情 况下,​​JOIN​​的联合比分隔​​FROM​​-列表 项的逗号更强。

​CROSS JOIN​​和​​INNER JOIN​​ 会产生简单的笛卡尔积,也就是与在​​FROM​​的顶层列出两个 表得到的结果相同,但是要用连接条件(如果有)约束该结果。 ​​CROSS JOIN​​与​​INNER JOIN ON (TRUE)​​等效,也就是说条件不会移除任何行。这些连接类型只是一种 记号上的方便,因为没有什么是你用纯粹的​​FROM​​和 ​​WHERE​​能做而它们不能做的。

​LEFT OUTER JOIN​​返回被限制过的笛卡尔积 中的所有行(即所有通过了其连接条件的组合行),外加左手表中 没有相应的通过了连接条件的右手行的每一行的拷贝。通过在右手 列中插入空值,这种左手行会被扩展为连接表的完整行。注意在决 定哪些行匹配时,只考虑​​JOIN​​子句自身的条件。之后 才应用外条件。

相反,​​RIGHT OUTER JOIN​​返回所有连接行,外加每 一个没有匹配上的右手行(在左端用空值扩展)。这只是为了记号 上的方便,因为你可以通过交换左右表把它转换成一个​​LEFT OUTER JOIN​​。

​FULL OUTER JOIN​​返回所有连接行,外加每 一个没有匹配上的左手行(在右端用空值扩展),再外加每一个没有 匹配上的右手行(在左端用空值扩展)。

分享
微博
QQ
微信
回复
2023-05-27 11:45:57
相关问题
mysql LEFT JOIN 使用SUM不准确
2805浏览 • 1回复 待解决
Left、Top为什么不生效?
798浏览 • 1回复 待解决
HarmonyOS Button 无法添加margin left right
280浏览 • 1回复 待解决
inner join 左右顺序为何不影响结果?
2553浏览 • 1回复 待解决
SQLite数据库MYSQL哪个更好用
2738浏览 • 2回复 已解决
SQLite数据库MYSQL哪个更好用
3316浏览 • 1回复 已解决
DevEcobuildrebuild有什么区别
413浏览 • 1回复 待解决
Redismysql数据库是怎么关联的?
2351浏览 • 1回复 待解决
数据库专属集群MyBasePolarDB区别?
2933浏览 • 1回复 待解决
UIAbilityExtensionAbility有什么区别
835浏览 • 1回复 待解决
LocalStorageAppStorage有什么区别
938浏览 • 2回复 待解决
HarmonyOS structclass有什么区别
67浏览 • 1回复 待解决
请问AbilitySliceFraction有什么区别
9959浏览 • 3回复 已解决