多行子查询

  • 返回多行
  • 使用多行操作比较操作符
操作符 含义
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后面的列子查询使用相关推荐

  1. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程

    MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...

  2. 三、MySQL子查询学习笔记(标量子查询、列子查询、行子查询、表子查询 详解)

    三.MySQL子查询学习笔记 7:子查询 含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询:在外面的查询语句,称为主查询或外查询 分类: 一 ...

  3. mysql子查询:标量子查询,行子查询,列子查询

    子查询 子查询或内查询 分类 按结果集的行列数不同 按子查询出现的位置 where或having后 标量子查询 列子查询(多行子查询) 行子查询 放在select后:仅仅支持标量子查询 放在from后 ...

  4. MYSQL数据库ANY的用法_列子查询中使用 IN、ANY、SOME 和 ALL 操作符

    由于列子查询返回的结果集是 N 行一列,因此不能直接使用 = > < >= <= <> 这些比较标量结果的操作符.在列子查询中可以使用 IN.ANY.SOME 和 ...

  5. 【一周入门MySQL—3】多表查询、子查询、常用函数

    多表查询.子查询.常用函数 一.多表查询 多表查询:通过不同表中具有相同意义的关键字段,将多个表进行连接,查询不同表中的字段信息. 对应关系 一对一:比如下图的人员信息表和人员身份证对应表,一个员工只 ...

  6. mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

    子查询的限制 ● 通常,不能在子查询中修改表并从同一表中进行选择.例如,此限制适用于以下形式的语法: 1. DELETE FROM t WHERE ... (SELECT ... FROM t ... ...

  7. MySQL多表数据记录查询详解

    在实际应用中,经常需要实现在一个查询语句中显示多张表的数据,这就是所谓的多表数据记录连接查询,简称来年将诶查询. 在具体实现连接查询操作时,首先将两个或两个以上的表按照某个条件连接起来,然后再查询到所 ...

  8. 【MySQL】数据库的高级查询

    前言 上次我们讲了数据库的基本查询,这次继续接上来数据库的高级查询.高级查询是建立在基础查询的基础上面的,如果你还没有看过建议你先去学习数据库的基础查询. 传送门:MySQL数据库的基本查询 数据库的 ...

  9. mysql 查询和修改组合_别崩溃,来看这个MySQL全面瓦解:子查询和组合查询

    概述 子查询是SQL查询中的重要一块,是我们基于多表之间进行数据聚合和判断的一种手段,使得我们的处理复杂数据更加的便捷,这一节我们主要来了解一下子查询. 先做一下数据准备,这边建立三张表:班级.学生. ...

最新文章

  1. 云+社区小程序知识周,等你来挑战!
  2. ios 团购信息客户端demo(三)
  3. 开发人员学Linux(1):VirtualBox中安装CentOS7过程记录
  4. Java面向对象--小游戏2
  5. 袜子商店应用:一个云原生参照应用
  6. C语言(CED)编写一个程序,求两个字符之间的加减运算。
  7. html js 控制span值,根据显示/隐藏span标签/ Javascript组设置span文本?
  8. 亲测使用 swagger 动态修改后台默认访问地址 swagger-ui.html
  9. Visual Studio 2015 中文社区版下载
  10. android 有线网络,安卓手机免费“有线”上网
  11. matlab plotyy 坐标轴设置,[转载]Matlab plotyy画双纵坐标图实例
  12. linux下xz文件如何解压,tar.xz文件如何解压
  13. 【源码】Simscape教程的模拟练习题
  14. 要去实习应该把这些面试题搞(bei)懂(hui)
  15. 苹果官网价格乌龙1499元被标149 元
  16. 完美更新安装TensorFlow-gpu
  17. 普通的照片,如何在线快速制作自己的证件照
  18. Windows下在VS-Code将本地图片加载至资源文件【可使用】
  19. MS5611气压计IIC源程序
  20. 显著性检测评估指标及计算方法

热门文章

  1. bash 的进站欢迎提示
  2. C函数数组元素初始化
  3. C++ 的多态性与虚函数
  4. Vue.Js添加自定义插件
  5. mysql命令分类(DML、DDL、DCL)
  6. AX宏Macros运算
  7. CSS3--transition
  8. MySQL性能分析及explain的使用
  9. 【JDK源码】java.lang包常用类详解
  10. 降低成本,提高生产力—8句话讲清RPA的部署