最常用SQL joins:内连接(交集)、左外连接、右外连接、左连接、右连接、全连接(并集),全外连接
1、内连接。两个表的公共部分用Inner join,Inner join是交集的部分。
Select * from TableA A inner join TableB B on A.key=B.key
2、左外连接。A表和B表的共有,加上A的独有,简称全A。
Select * from TableA A left join TableB B on A.key=B.key
红色部分是两表的公有部分,此时8号记录是A表的独有,右边的部门表并没有满足的就用null补齐。
3、右外连接。A表和B表的共有,加上B的独有,简称全B。
Select * from TableA A right join TableB B on A.key=B.key
红色部分是两表的公有部分,右表全部查出来,左表没有满足的就用null补齐。
不管是左连接还是右连接,连接之后表格的高度要一样,不匹配的表全部用null对齐。
4、左连接。A的独有,把公有的去掉,A独占就没B什么事了。
On是join条件。
Select * from TabelA A left join TableB B on A.key=B.key where B.key is null
A表的独占,即B表的Id必定等于null
5、右连接。B的独有,把公有的去掉,B独占就没A什么事了。
Select * from TableA A right join TableB B on A.key=B.key where A.key is null
B表的独占,即A表的id肯定为null、
6、全连接。Full outer join是全连接。
Mysql不支持这种语法,但是oracle支持。
但是!MySQL中并不支持这种写法,所以只能通过别的方法。A、B的所有也就是A的独有、B的独有 和A、B的共同拥有的数据,Mysql中可以使用:
select * from Table A left join Table B on A.Key = B.Key (找出A的所有)
union (去重)
select * from Table A right join Table B on A.Key = B.Key(找出B的所有)
7、全外连接(Mysql中不支持下图写法)。左右表的共有数据之外的数据查询 。各自独有之和,偏偏没有中间部分。
筛选出对于A表而言B为空,对于B表而言A为空的。MySQL中也不支持这种写法,所以只能通过别的方法。其实全外连接也就是A的独有+B的独有。
Mysql语法:
select * from Table A left join Table B on A.Key = B.Key where B.Key is null (找出A的独有)
union (去重)
select * from Table A right join Table B on A.Key = B.Key where A.Key is null (找出B的独有)
最常用SQL joins:内连接(交集)、左外连接、右外连接、左连接、右连接、全连接(并集),全外连接的更多相关文章
- 内连接,外链接(左连接、右连接、全连接),交叉连接大总结+附SQL JOINS图解[转]
1.什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据. 目的:实现多个表查询操作. 2.分类: 首先划分一下,连接分为三种:内连接.外连接.交叉连接 内连接(INNER ...
- Mysql常用sql语句(16)- inner join 内连接
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 利用条件表达式来消除交叉连接(cross joi ...
- mysql内连接(inner join 找两个表的交集)、左连接(left join 交集并且左表所有)、右连接(right join 交集并且右表所有)、全连接(mysql不支持)
用两个表(a_table.b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接.外连接( 左(外)连接.右(外)连接.全(外)连接). MySQL版 ...
- sql ,内连接,外连接,自然连接等各种连接
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和c ...
- My SQL的内连接,外链接查询
1.内连接:只连接匹配的行. 2.左外连接:包含左边表的全部行,以及右边表中所有匹配的行,无论右边的表有没有和左边匹配的行,左边的所有行都必须要显示. 3.右外连接:包含右边表的全部行,以及左边表中所 ...
- 【转】SQL中内连接和外连接
如表 ------------------------------------------------- table1 | table2 | ----------------- ...
- SQL Server内连接、外连接、交叉连接
前言 在数据库查询中,我们常常会用到的表连接查询,而我自己在工作中也是时常用这些表连接查询.而就在刚刚我却还没有搞清楚数据库表连接到底有哪几种, 这几种表连接查询方式又有什么区别,实属惭愧!借以此文以 ...
- SQL中内连接和外连接的问题!
本文系转载,版权归原作者所有. 如表 ------------------------------------------------- table1 | table2 | ...
- Mysql常用sql语句(17)- left/right join 外连接
测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 外连接分为两种:left join.right ...
随机推荐
- mysql高级day1
Mysql高级-day01 MySQL高级课程简介 序号 Day01 Day02 Day03 Day04 1 Linux系统安装MySQL 体系结构 应用优化 MySQL 常用工具 2 索引 存储引擎 ...
- WinformGDI+入门级实例——扫雷游戏(附源码)
写在前面: 本文将作为一个入门级的.结合源码的文章,旨在为刚刚接触GDI+编程或对相关知识感兴趣的读者做一个入门讲解.游戏尚且未完善,但基本功能都有,完整源码在文章结尾的附件中. 整体思路: 扫雷的游 ...
- k8s~kubectl常用命令
查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间 kubectl get pod kubectl get pod -n kube kubectl get pod -o w ...
- HBase和ElasticSearch索引类型及存储位置
本篇博文主要对HyperBase(HBase).Search(ElasticSearch)的索引类型及具体存储位置进行概要总结,让大家从整体上了解TDH平台中HyperBase和Search索引的管理 ...
- Codeforces Round #540 (Div. 3) D2. Coffee and Coursework (Hard Version) (二分,贪心)
题意:有\(n\)个数,每次可以选\(k(1\le k\le n)\)个数,并且得到\(a_1+max(0,a_2-1)+max(0,a_3-2)+...+max(0,a_k-k+1)\)的贡献,问最 ...
- 同时拿到BATJMD的Offer是怎样的一种体验?
写在前面 又到了收割Offer的季节,你准备好了吗?曾经的我,横扫各个大厂的Offer.还是那句话:进大厂临时抱佛脚是肯定不行的,一定要注重平时的总结和积累,多思考,多积累,多总结,多复盘,将工作经历 ...
- Leetcode(145)-二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 思路:一开始编写二叉树后序遍历的程序,感觉定级为困难有点欠妥,确实,如果用 ...
- 康托展开:对全排列的HASH和还原,判断搜索中的某个排列是否出现过
题目:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2297 前置技能:(千万注意是 ...
- Java开发工程师最新面试题库系列——集合部分(附答案)
集合 如果你有更好的想法请在评论区留下您的答案,一起交流讨论 说说常见的集合有哪些? 答:主要分List.Set.Map.Queue四类,其中包含ArrayList.LinkedList.HashSe ...
- RT-Thread学习笔记2-互斥量与信号量
目录 1. 临界区保护 1.1 方法一:关闭系统调度保护临界区 1.2 方法二:互斥特性保护临界区 2. 信号量 2.1 信号量的定义 2.2 信号量的操作 3. 生产者.消费者问题 4. 互斥量 4 ...