Mysql学习笔记09——子查询-阿里云开发者社区

开发者社区> 是安可啊> 正文

Mysql学习笔记09——子查询

简介: Mysql学习篇
+关注继续查看

细枝末节

1. 子查询又叫内查询,是出现在其他语句中的SELECT语句

2. 与子查询对应的是主查询,又叫外查询

3. 子查询一般放在小括号中

4. 子查询一般放在条件右侧

5. 标量子查询一般搭配单行操作符:>,<,>=,<=,=,<>

6. 列子查询一般搭配多行操作符:IN,ANY/SOME,ALL

7. 子查询的执行优先于主查询执行,主查询的条件用到了子查询的结果

分类

按结果集的行列数

1. 标量子查询:   结果集为一行一列

2. 列子查询:     结果集为一列多行

3. 行子查询:     结果集为一行多列

4. 表子查询:     结果集为多行多列

按子查询出现位置

1. SELECT后面:             支持标量子查询

2. FROM后面:               支持表子查询

3. WHEREE或HAVING后面:     支持标量子查询,列子查询,行子查询

4. EXISTS后面:             支持表子查询

WHERE或HAVING后面

支持标量子查询,列子查询,行子查询

示例

查询工资比Abel高的员工信息

/* 1. 查询Abel的工资 */

SELECT salary

FROM emp

WHERE name = 'Abel';


/* 2. 查询salary>1中结果的员工信息 */

SELECT *

FROM emp

WHERE salary > (

    SELECT salary

    FROM emp

    WHERE name = 'Abel'

);

查询最低工资大于50号部门最低工资的部门id及其最低工资

/* 1. 查询50号部门的最低工资 */

SELECT MIN(salary)

FROM emp

WHERE dept_id = 50;


/* 2. 查询每个部门的最低工资 */

SELECT MIN(salary), dept_id

FROM emp

GOURP BY dept_id;


/* 3. 在2的结果集上进行筛选,满足MIN(salary)>1中结果 */

SELECT dept_id, MIN(salary)

FROM emp

GROUP BY dept_id

HAVING MIN(salary) > (

    SELECT MIN(salary)

    FROM emp

    WHERE dept_id = 50

);

列子查询(多行子查询)

示例

查询location_id是1400或1700的部门的所有员工姓名

/* 1. 查询location_id是1400或1700的部门 */

SELECT id

FROM dept

WHERE loc_id IN(1400, 1700);


/* 2. 在1的结果中查询所有员工姓名 */

SELECT name

FROM emp

WHERE dept_id IN(

    SELECT id

    FROM dept

    WHERE loc_id IN(1400, 1700)

);

EXISTS后面

格式

/* 子查询有元素,结果为1;子查询无元素,结果为0 */

EXISTS(子查询)

示例

查询有员工的部门名

SELECT name

FROM dept

WHERE EXISTS(

    SELECT *

    FROM emp

    WHERE dept.id = emp.dept_id

);

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
mysql update使用子查询
<div class="markdown_views"> <p>今天我像以前操作Oracle写了一个update sql:</p> <pre class="prettyprint"><code class=" hljs sql"><span class="hljs-operator"><span class="hljs-keyword">update</span> dev
2431 0
MySql数据库服务配置|学习笔记
快速学习MySql数据库服务配置
46 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8432 0
mongoose学习笔记3--简单查询1
简述 查询就是返回一个集合中的文档的子集 Mongoose 模型提供了   find、     findOne、   findById 三种方法用于文档查询。 为了方便后面课程的有效学习,我们先添加一些测试数据。
688 0
数据库的基本操作3-简单查询 | 学习笔记
快速学习数据库的基本操作3-简单查询
9 0
+关注
是安可啊
陷阵之志,有死无生。
61
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载