MySQL where后面的列子查询使用
多行子查询
- 返回多行
- 使用多行操作比较操作符
操作符 | 含义 |
---|---|
IN/NOT IN | 等于列表中 任意一个 |
ANY/SOME | 和子查询返回的 某一个值 比较 |
ALL+ | 和子查询返回的 所有值 比较 |
#案例1:返回location_id是1400或1700的部门中的所有员工姓名
#①查询location_id是1400或1700的部门编号
SELECT DISTINCT department_id
FROM departments
WHERE location_id IN(1400,1700)
#②查询员工姓名,要求部门号是①列表中的某一个
SELECT last_name
FROM employees
WHERE department_id in(SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700)
);
#或
SELECT last_name
FROM employees
WHERE department_id = ANY(SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700)
);
注意:not in 等价于 <> ALL
SELECT last_name
FROM employees
WHERE department_id not in(SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700)
);
等价于
SELECT last_name
FROM employees
WHERE department_i <> ALL(SELECT DISTINCT department_idFROM departmentsWHERE location_id IN(1400,1700)
);
#案例2:返回其它工种中比job_id为‘IT_PROG’工种任一工资低的员工的员工号、姓名、job_id 以及salary
#①查询job_id为‘IT_PROG’部门任一工资
SELECT DISTINCT salary
FROM employees
WHERE job_id = 'IT_PROG'
#②查询员工号、姓名、job_id 以及salary,salary<(①)的任意一个
SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<ANY(SELECT DISTINCT salaryFROM employeesWHERE job_id = 'IT_PROG'
) AND job_id<>'IT_PROG';
#或
SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<(SELECT MAX(salary)FROM employeesWHERE job_id = 'IT_PROG'
) AND job_id<>'IT_PROG';
#案例3:返回其它部门中比job_id为‘IT_PROG’部门所有工资都低的员工 的员工号、姓名、job_id 以及salary
SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<ALL(SELECT DISTINCT salaryFROM employeesWHERE job_id = 'IT_PROG'
) AND job_id<>'IT_PROG';
#或
SELECT last_name,employee_id,job_id,salary
FROM employees
WHERE salary<(SELECT MIN( salary)FROM employeesWHERE job_id = 'IT_PROG'
) AND job_id<>'IT_PROG';
MySQL where后面的列子查询使用相关推荐
- mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程
MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...
- 三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)
三.MySQL子查询学习笔记 7:子查询 含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询:在外面的查询语句,称为主查询或外查询 分类: 一 ...
- mysql子查询:标量子查询,行子查询,列子查询
子查询 子查询或内查询 分类 按结果集的行列数不同 按子查询出现的位置 where或having后 标量子查询 列子查询(多行子查询) 行子查询 放在select后:仅仅支持标量子查询 放在from后 ...
- MYSQL数据库ANY的用法_列子查询中使用 IN、ANY、SOME 和 ALL 操作符
由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的操作符.在列子查询中可以使用 IN.ANY.SOME 和 ...
- 【一周入门MySQL—3】多表查询、子查询、常用函数
多表查询.子查询.常用函数 一.多表查询 多表查询:通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息. 对应关系 一对一:比如下图的人员信息表和人员身份证对应表,一个员工只 ...
- mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)
子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...
- MySQL多表数据记录查询详解
在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...
- 【MySQL】数据库的高级查询
前言 上次我们讲了数据库的基本查询,这次继续接上来数据库的高级查询.高级查询是建立在基础查询的基础上面的,如果你还没有看过建议你先去学习数据库的基础查询. 传送门:MySQL数据库的基本查询 数据库的 ...
- mysql 查询和修改组合_别崩溃,来看这个MySQL全面瓦解:子查询和组合查询
概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...
最新文章
- 云+社区小程序知识周,等你来挑战!
- ios 团购信息客户端demo(三)
- 开发人员学Linux(1):VirtualBox中安装CentOS7过程记录
- Java面向对象--小游戏2
- 袜子商店应用:一个云原生参照应用
- C语言(CED)编写一个程序,求两个字符之间的加减运算。
- html js 控制span值,根据显示/隐藏span标签/ Javascript组设置span文本?
- 亲测使用 swagger 动态修改后台默认访问地址 swagger-ui.html
- Visual Studio 2015 中文社区版下载
- android 有线网络,安卓手机免费“有线”上网
- matlab plotyy 坐标轴设置,[转载]Matlab plotyy画双纵坐标图实例
- linux下xz文件如何解压,tar.xz文件如何解压
- 【源码】Simscape教程的模拟练习题
- 要去实习应该把这些面试题搞(bei)懂(hui)
- 苹果官网价格乌龙1499元被标149 元
- 完美更新安装TensorFlow-gpu
- 普通的照片,如何在线快速制作自己的证件照
- Windows下在VS-Code将本地图片加载至资源文件【可使用】
- MS5611气压计IIC源程序
- 显著性检测评估指标及计算方法