子查询 & 联合查询
子查询
嵌套在其他语句内部的select语句称为子查询或内查询,外层的语句可以是insert、update、delete、select等,一般select作为外层语句较多。外面如果为select语句,则此语句称为外查询或主查询
【说明】:
- 子查询 ( 内查询) 在主查询之前执行完成。
- 子查询的结果被主查询( 外查询)使用 。
- 多行子查询和单行子查询操作不能混用
分类
| 分类 | 说明 |
|---|---|
| 标量子查询(单行子查询) | 结果集为一行一列 |
| 列子查询(多行子查询) | 结果集为多行一列 |
| 行子查询 | 结果集为多行多列 |
| 表子查询 | 结果集为多行多列 |
使用
按出现位置
select后面:
仅仅支持标量子查询(一行一列)from后面:
表子查询(将子查询结果充当一张表),要求必须起别名
where或having后面:
标量子查询
列子查询
行子查询exists后面:
标量子查询
列子查询
行子查询
表子查询
注意:
- 单行子查询操作符::
= > >= < <= <>(不等) - 多行子查询操作符:
IN/NOT IN ANY|SOME ALL - 能用exists的地方都能用in
#查询有员工的部门名
use myemployees
SELECT department_id
FROM departments d
WHERE EXISTS(
SELECT *
FROM employees e
WHERE d.department_id = e.department_id
)
#in写法
SELECT department_id
FROM departments
WHERE department_id in (
SELECT department_id
FROM employees e
)
综合案例
#查询工资最低的员工信息
#1、查询最低工资
SELECT MIN(salary)
FROM employees;
#2、salary = 1
SELECT last_name,salary
FROM employees
WHERE salary = (
SELECT MIN(salary)
FROM employees
);
#查询平均工资最低的部门信息
#1、查询每个部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
#2、
SELECT ag,d.*
FROM departments d
INNER JOIN (
SELECT AVG(salary) ag,department_id
FROM employees
GROUP BY department_id
ORDER BY ag
LIMIT 1
) d_avg
ON d_avg.department_id = d.department_id
#查询平均工资最高的job信息
#1、查询平均工资最高的job_id
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id
ORDER BY AVG(salary) DESC
LIMIT 1
#2、
SELECT *
FROM jobs
WHERE job_id = (
SELECT job_id
FROM employees
GROUP BY job_id
ORDER BY AVG(salary) DESC
LIMIT 1
)
联合查询
常用于查询多个表,且多表之间没有直接的连接关系
查询语句1
union
查询语句2
union
查询语句3
...;
作用:
- 可将一条比较复杂的查询语句拆分成多条语句
- 可将无关联的表合并在一起,连接查询需要两表中有关联的属性联合查询不需要
注意:
union关键字会去重,想要保留重复数据,则要使用union all- 只在最后一个查询语句后加分号结束符
; - 要求多条查询语句的查询列数必须一致
- 要求多条查询语句的查询的各列类型、顺序一致,若不一致则按第一条的顺 序排列
- union 会去重,union all包含重复项
子查询 & 联合查询的更多相关文章
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- MySQL数据库8 -子查询,联合查询
一 使用IN关键字的子查询 问题: 查询游戏类型是'棋牌类' 的游戏的分数信息 - 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以 ...
- MySQL数据库 —子查询,联合查询
一 使用IN关键字的子查询 1.查询游戏类型是'棋牌类' 的游戏的分数信息 游戏分数表中并未包含游戏类型信息 思路一:采用链接查询 思路二: 分两步进行,首先找到所以'棋牌类'游戏的编号,再以这一组编 ...
- 转:EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
- EntityFramework查询--联合查询(Join,GroupJoin)
首先我们先看一下Join public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(this ...
- MySQL (六)--外键、联合查询、子查询
1 外键 外键:foreign key,外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称为外键. 1.1 增加外键 外键可以在创建表的时候或创建表之后增 ...
- mysql之连接查询、联合查询、子查询
本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接 ...
- Mysql连接查询、子查询、联合查询 整理
连接查询 连接语法的基本形式 from 表1 [连接方式] join 表2 [on 连接条件]: 交叉连接 语法: from 表1 [cross] join 表2 ; //可 ...
- mysql学习之路_联合查询与子查询
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...
随机推荐
- MacOS下terminal防止ssh自动断开的方法和自动断开的原因
之前换了个工作环境,用terminal连接远程服务器的时候老是出现自动断开的情况,搞得我很是郁闷.因为之前在家的时候,并没有出现过类似情况.后来在网上找了很久,发现国外网站上有个大神说应该是有些路由器 ...
- JS返回一个字符串中长度最小的单词的长度
题目:编写一个方法,返回字符串中最小长度的单词的长度. var str = 'What a good day today!'; 1 //方法一 2 function returnString1(str ...
- 洛谷2805 [NOI2009]植物大战僵尸 (拓扑排序+最小割)
坚决抵制长题面的题目! 首先观察到这个题目中,我们会发现,我们对于原图中的保护关系(一个点右边的点对于这个点也算是保护) 相当于一种依赖. 那么不难看出这个题实际上是一个最大权闭合子图模型. 我们直接 ...
- CF1082G Petya and Graph(最小割,最大权闭合子图)
QWQ嘤嘤嘤 感觉是最水的一道\(G\)题了 顺便记录一下第一次在考场上做出来G qwqqq 题目大意就是说: 给你n个点,m条边,让你选出来一些边,最大化边权减点权 \(n\le 1000\) QW ...
- pandas 取 groupby 后每个分组的前 N 行
原始数据如下: (图是从 excel 截的,最左1行不是数据,是 excel 自带的行号,为了方便说明截进来的) 除去首行是标题外,有效数据为 28行 x 4列 目前的需求是根据 partition ...
- 函数返回值为 const 指针、const 引用
函数返回值为 const 指针,可以使得外部在得到这个指针后,不能修改其指向的内容.返回值为 const 引用同理. class CString { private: char* str; publi ...
- 使用寄存器点亮LED——2
1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 步骤 先新建个文件夹保存项目 再新建项目 将startup_stm32f10x_hd.s拷贝到该文件夹下 新建main. ...
- 从源码层面深度剖析Redisson实现分布式锁的原理(全程干货,注意收藏)
Redis实现分布式锁的原理 前面讲了Redis在实际业务场景中的应用,那么下面再来了解一下Redisson功能性场景的应用,也就是大家经常使用的分布式锁的实现场景. 引入redisson依赖 < ...
- Hive架构及搭建方式
目录 前言 hive的基础知识 基本架构 metastore 内嵌服务和数据库 内嵌服务 服务和数据库单独部署 hcatalog 客户端 客户端的本地模式 beeline beeline的自动模式 j ...
- PHP文件上传漏洞与一句话木马
靶子代码: 前端效果: 这是个没有任何防护的文件上传代码,同时还热心的附上了上传文件的路径. 我们写好php木马后,什么额外工作也不需要做,直接上传就行了.上传后在浏览器里访问该文件,其就会被执行. ...