当前位置:网站首页>MySQL --- 子查询 - 列子查询(多行子查询)
MySQL --- 子查询 - 列子查询(多行子查询)
2022-07-25 21:59:00 【小雪菜本菜】
列子查询(多行子查询)
子查询返回的是多行单列的数据,就是一列数据。多行子查询也称为集合比较子查询
在使用多行子查询需要使用多行比较操作符:
| 操作符 | 含义 |
| IN | 等于列表中的任意一个,在某个集合中找到了就是成立的,IN和=ANY是一样的 |
| ANY | 需要和单行比较操作符一起使用(>、<、=、<>...),与子查询结果中任何一个值比较,一个成立就成立 |
| ALL | 需要和单行比较操作符一起使用(>、<、=、<>...),和子查询返回的所有值比较,所有条件同时成立才成立 |
| SOME | 实际上是ANY的别名,作用与ANY相同,所以一般使用ANY |
IN操作符
MySQL --- 多表查询 - 笛卡尔积和正确的多表查询、等值连接和不等值连接、内连接和外连接 ON一般与JOIN一起使用
MySQL --- 多表查询 - 七种JOINS实现、集合运算、多表查询练习
IN 运算符用来判断表达式的值是否位于给出的列表中;如果是,返回值为 1,否则返回值为 0。
NOT IN 的作用和 IN 恰好相反,NOT IN 用来判断表达式的值是否不存在于给出的列表中;如果不是,返回值为 1,否则返回值为 0。
查询出与每个部门中最低工资相同的员工信息
按照部门分组,统计每个部门的最低工资
根据最低工资查询出员工信息


报错,子查询返回最多只有一行,但是需求要实现多行,需要把等于5000的、等于800的、等于950的、等于1300的薪资输出
使用IN操作符,当工资在这个集合里面的时候,把对应的员工进行输出
-- 查询出每个员工信息
-- SELECT * FROM emp WHERE sal=();
-- 得到整个部门的最低工资之后按部门编号进行分组
SELECT MIN(sal) FROM emp GROUP BY deptno;
-- 查询出与每个部门中最低工资相同的员工信息
SELECT * FROM emp WHERE sal IN(SELECT MIN(sal) FROM emp GROUP BY deptno);
把部门编号为NULL的员工信息去掉
-- 查询出每个员工信息
-- SELECT * FROM emp WHERE sal=();
-- 得到整个部门的最低工资之后按部门编号进行分组
SELECT MIN(sal) FROM emp GROUP BY deptno;
-- 查询出与每个部门中最低工资相同的员工信息
SELECT * FROM emp WHERE sal IN(SELECT MIN(sal) FROM emp GROUP BY deptno HAVING deptno IS NOT NULL);
查询出不与每个部门中最低工资相同的员工信息
SELECT * FROM emp WHERE sal NOT IN(SELECT MIN(sal) FROM emp GROUP BY deptno HAVING deptno IS NOT NULL);
ANY操作符
ANY关键字是一个MySQL运算符,如果子查询条件中ANY的比较结果为TRUE,则它会返回布尔值TRUE
查询工资比任何管理工资都要高的员工信息
查找出每个管理的薪资
每个员工的薪资与每个管理的薪资比较
-- 查询出每个员工信息
-- SELECT * FROM emp WHERE sal=();
-- 得到所有管理的工资
SELECT sal FROM emp WHERE job='MANAGER';
-- 查询工资比任何一个管理工资高的员工信息
报错,子查询最多应该要返回一行,最多使用一个值进行比较,一个值不能与多个值进行比较,不知道是与2975比较、还是与2850比较、还是与2450比较

-- 查询出每个员工信息
-- SELECT * FROM emp WHERE sal=();
SELECT sal FROM emp WHERE job='MANAGER';
-- 查询工资比任何一个管理工资高的员工信息
SELECT * FROM emp WHERE sal>=ANY(SELECT sal FROM emp WHERE job='MANAGER');
ALL操作符
ALL关键字是一个MySQL运算符,如果子查询条件中ALL的比较结果为TRUE,则它会返回布尔值TRUE
案例同ANY操作符
不存在一个员工的薪资等于2975、等于2850、等于2450
-- 查询出每个员工信息
-- SELECT * FROM emp WHERE sal=();
SELECT sal FROM emp WHERE job='MANAGER';
-- 查询工资等于所有管理工资的员工信息
SELECT * FROM emp WHERE sal=ALL(SELECT sal FROM emp WHERE job='MANAGER');

总结
IN 判断是否在集合内,在集合内返回真,不在集合内返回假
ANY 判断是否在集合内(和IN一样)
>ANY 大于集合中值最小的那一个
<ANY 小于集合中值最大的那一个
<>ANY 与集合中任意一个不等都成立
= ALL 与集合中每个值都相等才成立
> ALL 比集合中最大的那个值还大
< ALL 比集合中最小的那个值还小
<> ALL 与集合中每个值都不相等
边栏推荐
- Golang: MVC models
- Preliminary study on Tesseract OCR
- How to configure and use rocksdb in the flinksql environment
- 自动化测试岗花20K招人,到最后居然没一个合适的,招两个应届生都比他们强吧
- Having met a tester with three years' experience in Tencent, I saw the real test ceiling
- 手机端微信发朋友圈功能测试点总结
- 突破性思维在测试工作中的应用
- Redis configuration
- C语言游戏 双缓存解决闪屏问题 详细总结[通俗易懂]
- 狗粮的成分
猜你喜欢
随机推荐
[hand torn STL] unordered_ set、unordered_ Map (encapsulated with hash table)
Bitcoin.com:usdd represents a truly decentralized stable currency
What are the application characteristics of NTU general database gbase Bi?
[Fantan] how to design a test platform?
[fan Tan] after the arrival of Web3.0, where should testers go? (ten predictions and suggestions)
jsp九大内置对象
[fan Tan] those stories that seem to be thinking of the company but are actually very selfish (I: building wheels)
kubernetes之VictoriaMetrics单节点
2022最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了
[leetcode ladder] linked list · 876 find the middle node of the linked list
Application of breakthrough thinking in testing work
Composition of dog food
Redis是什么?简述它的优缺点
Animation curves are used every day. Can you make one by yourself? After reading this article, you will!
Collation of SQL statement exercises
PE format: analyze and implement IATHOOK
【GO基础02】第一个程序
jenkins+SVN配置
[fan Tan] in detail: lower control, upward management, upward drawing cake.
【饭谈】细说:下克上,向上管理,向上画饼。



![[hand tear STL] BitSet (bitmap), bloom filter](/img/bc/a6e3c2ccce478460a2742852eee9cf.png)




