MySQL 内外连接,以及外连接的LEFT JOIN,Cross Join

本文介绍了数据库查询中的CrossJoin(笛卡尔乘积)概念,以及内连接(如INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)和全连接(FULLJOIN)的区别和使用场景,重点通过示例说明了LEFTJOIN如何处理中間表中的缺失数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LEFT OUTER JOIN  就是LEFT JOIN,LEFT OUTER JOIN只是个人书写习惯。

join等同于inner join等同于where,写Inner 和不写Inner 的话,没有区别。

因为执行时数据通常会把它当成Inner Join 执行 。

WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)

WHERE和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

Cross Join笛卡尔乘积

N 和M 的结果是N*M 

内连接(innner join,或称等值连接):返回两张表中匹配的记录

外连接包括:
左连接(left join):返回两张表匹配的记录,以及左表中多余的记录
右连接(right join):返回两张表匹配的记录,以及右表中多余的记录
全连接(full join):返回两张表匹配的记录,以及左右两表中各自多余的记录

通過中間表説明

biz_email_sent     table1

biz_email              table2

biz_email_sent_address   中間表

LEFT JOIN 是 JOIN 左邊的記錄(biz_email_sent   id=52)全部查出,比如52 的記錄全部查出。

即使中間表se.sa_email_id 在 table2中找不到,比如為空,或者另有其它值,都會查出來。

SELECT
	* 
FROM
	biz_email_sent s
	LEFT JOIN biz_email_sent_address se ON s.es_id = se.sa_send_id 
	LEFT JOIN biz_email e ON e.be_email_address = se.sa_email_id
	
WHERE
	 s.es_id = 52

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值