10.3where后面的 列子查询使用——MySQL
2020-08-02 22:36
211 查看
-- where后面的 列子查询(多行子查询) /* in/not in 等于/不等于 列表中的任意一个 (☆) any | some 和子查询返回的某一个值比较 all 和子查询返回的所有值比较 */ -- 案例1:返回location_id 是1400或1700的部门中的所有员工姓名 -- ①查询location_id是1400或1700的部门编号 -- ②查询员工姓名要求部门编号是①中的一个 SELECT last_name from employees WHERE department_id in( SELECT DISTINCT department_id -- 这里还是需要去重的 FROM departments WHERE location_id in (1400,1700)); -- 或 SELECT last_name from employees WHERE department_id=ANY( SELECT DISTINCT department_id -- 这里还是需要去重的 FROM departments WHERE location_id in (1400,1700)); -- 案例2:返回其他工种中比job_id 为“IT_PROG”部门任意工资低的员工的员工号,姓名,job_id以及salary -- ①查询job_id为“ITPROG”部门任一工资 -- ②查询员工号,姓名,job_id以及salary SELECT last_name,employee_id,salary FROM employees WHERE salary<ANY( SELECT DISTINCT salary FROM employees WHERE job_id="IT_PROG" )AND job_id<>"IT_PROG"; -- 或 SELECT last_name,employee_id,salary FROM employees WHERE salary<( SELECT MAX(salary) FROM employees WHERE job_id="IT_PROG" )AND job_id<>"IT_PROG"; -- 案例3:返回其他工种中比job_id 为“IT_PROG”部门所有工资低的员工的员工号,姓名,job_id以及salary SELECT last_name,employee_id,salary FROM employees WHERE salary<ALL( SELECT DISTINCT salary FROM employees WHERE job_id="IT_PROG" )AND job_id<>"IT_PROG"; -- 或 SELECT last_name,employee_id,salary FROM employees WHERE salary<( SELECT MIN(salary) FROM employees WHERE job_id="IT_PROG" )AND job_id<>"IT_PROG";
相关文章推荐
- MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用
- 10.4where后面的 行子查询使用——MySQL
- MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用
- MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用(转)
- mysql使用rand随机查询记录效率测试
- MySQL 使用查询结果创建表
- [MySQL优化案例]系列 -- 无法使用查询缓存
- MySQL查询优化技术系列讲座之使用索引(二)
- Mysql 按时间查询的几个函数使用方法
- MySQL查询优化技术系列讲座之使用索引
- 使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化系列记录
- 使用子查询提高MySQL分页效率
- php中使用mysql_stmt(预处理语句)来处理select查询结果
- MySQL中使用case when 语句实现多条件查询的方法
- 使用Memcache缓存MySQL查询
- 使用distinct在mysql中查询多条不重复记录值
- 使用MySQL自身日志功能查找慢查询
- mysql 按年度、季度、月度、周、日SQL统计查询,mysql 存储过程 中 in 和 FIND_IN_SET 传递多个参数的使用
- mysql使用rand随机查询记录效率测试
- MySQL查询优化讲座之使用索引