Mysql中实现全外连接

MySql中多表查询只提供了内连接,左外连接与右外连接:
table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr

1】INNER JOIN ON内连接(只写join时默认为内连接)
SELECT * FROM emp e JOIN dept d ON e.deptno=d.deptno;
内连接

2】外连接:在左外连接和右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。如果基表的数据在另一张表没有记录。那么在相关联的结果集行中列显示为空值(NULL)。

2.1、左外连接:显示左表的全部记录
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno;
左外连接

2.2、右外连接:显示右表的全部记录
SELECT * FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
右外连接
2.3、全外连接:左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充;
也就是:
左外连接=左表全部记录+相关联结果
右外连接=右表全部记录+相关联结果
全外连接=左表全部记录+右表全部记录+相关联结果=左外连接+右外连接-相关联结果(即去重复)

那么在MYSQL中谁可以做到呢?
UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

故实现全外连接可以使用:
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno=d.deptno
UNION
SELECT * FROM emp e RIGHT JOIN dept d ON e.deptno=d.deptno;
全外连接

注释:以上连接全为等值连接;Oracle中全外连接可以使用full join;请不要弄混。

MySQL不支持外连接MySQL只提供了内连接、左外连接和右外连接三种类型的连接。外连接可以返回左表和右表的所有记录,即使没有匹配的记录也会返回。然而,MySQL不支持这种类型的连接。如果需要使用外连接,可以考虑使用其他数据库管理系统,如Oracle或SQL Server。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL外连接](https://blog.csdn.net/qq_41927743/article/details/99692696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Mysql实现外连接](https://blog.csdn.net/tayngh/article/details/99692541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [一篇文章看懂MySQL的多表连接(包含左/右/外连接)](https://blog.csdn.net/Hsk_03/article/details/130355746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值