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数据库中把varchar类型转化为int类型的方法
这篇文章主要介绍了Mysql数据库中把varchar类型转化为int类型的方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下2016-07-07MySQL安装三种方法总结(yum安装、编译安装、二进制安装)
MySQL安装网上的教程有很多,基本上大同小异,但是安装软件有时就可能因为一个细节安装失败,这篇文章主要介绍了MySQL安装三种方法的相关资料,三种方法分别是yum安装、编译安装以及二进制安装,需要的朋友可以参考下2023-12-12MySQL Prepared Statement 预处理的操作方法
预处理语句是一种在数据库管理系统中使用的编程概念,用于执行对数据库进行操作的 SQL 语句,这篇文章主要介绍了MySQL Prepared Statement 预处理 ,需要的朋友可以参考下2024-08-08replace MYSQL字符替换函数sql语句分享(正则判断)
最近更新网站发现一些字段的值不是预期的效果,需要替换下值,通过下面的sql语句,直接执行就可以了2012-06-06MySQL order by与group by查询优化实现详解
order by 子句尽量使用index方式排序(即using index),避免使用filesort方式排序(即using filesort)。Index方式效率高,它指MySQL扫描索引本身完成排序,filesort则效率低2022-11-11MySQL中REPLACE INTO和INSERT INTO的区别分析
REPLACE的运行与INSERT很相似。只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。2011-07-07
最新评论