SQL关联查询
从2张或多张表中,取出有关联的数据

关联查询一共有几种情况:
内连接:INNER JOIN 、CROSS JOIN

(1)形式一
select 字段列表
from A表 inner join B表
on 关联条件
【where 其他筛选条件】
说明:如果不写关联条件,会出现一种现象:笛卡尔积
关联条件的个数 = n - 1,n是几张表关联
on只能和join一起用
(2) 形式二
select 字段列表
from A表 , B表
where 关联条件 【and 其他筛选条件】
外连接:左外连接(LEFT OUTER JOIN)
左连接:
第一种结果:A

select 字段列表
from A表 left join B表
on 关联条件
第二种结果:A - A∩B

select 字段列表
from A表 left join B表
on 关联条件
where 从表的关联字段 is null
右外连接(RIGHT OUTER JOIN)
第一种结果:B

select 字段列表
from A表 right join B表
on 关联条件
第二种结果:B - A∩B

select 字段列表
from A表 right join B表
on 关联条件
where 从表的关联字段 is null
全外连接(FULL OUTER JOIN)
使用union实现全连接的效果
(1)A ∪ B

select 字段列表
from A表 left join B表
on 关联条件
union
select 字段列表
from A表 right join B表
on 关联条件
(3)A ∪ B - A ∩ B

select 字段列表
from A表 left join B表
on 关联条件
where 从表的关联字段 is null
union
select 字段列表
from A表 right join B表
on 关联条件
where 从表的关联字段 is null
自连接:当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义
SQL关联查询的更多相关文章
- 通过Spark SQL关联查询两个HDFS上的文件操作
order_created.txt 订单编号 订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt 订单编号 订单提取时间 -- :: ...
- 学习SQL关联查询
通过一个小问题来学习SQL关联查询 原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1, ...
- (一)SQL关联查询的使用技巧 (各种 join)
---恢复内容开始--- (一)SQL关联查询的使用技巧 (各种 join) 这几天因为工作的时候,发现自己的sql语句基础不是很好,特意研究了一下,发现sql语句真的是博大精深,sql语句不仅是要查 ...
- MyBatis 实践 -动态SQL/关联查询
MyBatis 实践 标签: Java与存储 动态SQL 动态SQL提供了对SQL语句的灵活操作,通过表达式进行判断,对SQL进行拼接/组装. if 对查询条件进行判断,如果输入参数不为空才进行查询条 ...
- sql关联查询—将一个表的查询结果作为新表进行查询操作
例题:# 各个部门中 最高工资中最低的那个部门的 最低工资是多少? 先考虑取得各个部门最高工资 SELECT MAX(salary) AS max_salary,e.`department_id` ...
- 通过一个小问题来学习SQL关联查询
原话题: 是关于一个left join的,没有技术难度,但不想清楚不一定能回答出正确答案来: TabA表有三个字段Id,Col1,Col2 且里面有一条数据1,1,2 TabB表有两个字段Id,Col ...
- 转载:sql关联查询
inner join(等值连接)只返回两个表中联结字段相等的行 left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接)返回包括右表中的所有记录和 ...
- SQL关联查询中on与where
微信公众号:刺刺刺猬的优雅 前段时间,做一个查询,打算用left join查询存在于A表但不存在于B表记录,但怎么查都不对,原因是把所有filter全部放在了where语句中,因此回头看了资料,记录一 ...
- sql关联查询更新速度慢的问题
原语句 update B b set b.fid = (select f.id from F f where f.bid = b.id) ; 可以考虑用 begin for f in (select ...
随机推荐
- 前端07 /jQuery初识
前端07 /jQuery初识 目录 前端07 /jQuery初识 1.jquery介绍 1.1 jquery的优势 1.2 jquery是什么? 1.3 jquery的导入 2.jQuery的使用 2 ...
- vue + echart 实现中国地图 和 省市地图(可切换省份)
一.中国地图 1.先导入echarts,然后再main.js里引入echarts // 引入echartsimport echarts from 'echarts'Vue.prototype.$ech ...
- OSCP Learning Notes - Exploit(7)
Pre-Exploit Password Attacks Tools: 1. ncrack Ncrack 0.6 ( http://ncrack.org )Usage: ncrack [Options ...
- 洛谷 P1080 国王游戏 题解
原题 传送门 思路 分析 我们先假设队伍如下: People left hand right hand Before \(S_a\) A \(a_1\) \(b_1\) B \(a_2\) \(b_2 ...
- ResNeXt论文阅读笔记.md
目录 1. 提出背景 2. 核心思想 3. 论文核心 4. 分组卷积 5. 核心代码 论文: Aggregated Residual Transformations for Deep Neural N ...
- 题解 洛谷 P6640 【[BJOI2020] 封印】
设\(lenth_i\)为\(s\)在\(i\)位置的前缀的后缀为\(t\)的一个子串的最长长度,即为从\(i\)位置开始往前和\(t\)的最长公共子串长度.其可以通过对\(t\)建后缀自动机,然后让 ...
- 面试题十七:打印从1到最大的n位数
输入数字n,按顺序打印到最大的n位数 注意:没有规定类型,无论int或long 都会有可能溢出. 应当选择其他类型如String 方法一:定义长度与位数相同的字符数组,从0开始进行加一操作打印 pub ...
- redis基本操作介绍
一.字符串 单个设置:set key value,如果key不存在则设置键值对,如果存在则修改 批量设置:mset key1 value1 [key2 value2] 单个获取:get key,如果k ...
- matplotlib图表介绍
Matplotlib 是一个python 的绘图库,主要用于生成2D图表. 常用到的是matplotlib中的pyplot,导入方式import matplotlib.pyplot as plt 一. ...
- heredoc
Heredoc在正规的PHP文档中和技术书籍中一般没有详细讲述.他是一种Perl风格的字符串输出技术.使用heredoc技术可以实现界面与代码的准分离,比如phpwind模板.规则如下:1.”< ...