mysql 子查询 用法示例
文章目录
前言
SQL 中子查询的使用大大增强了 SELECT 查询的能力
一、什么时候用到子查询?
子查询指一个查询语句嵌套在另一个查询语句内部的查询,很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。
二、使用步骤
1.子查询的基本语法结构:
SELECT select_list FROM table WHERE expr operator(
SELECT select_list FROM table
);
2.示例表说明
CREATE TABLE employee(
employee_id bigint(20) not null primary key,
name varchar(20),
salary double(20),
department_id bigint(20),
job_id bigint(20)
);
3.单行比较操作符
=
>
>=
<
<=
<>
4.多行比较操作符
IN 等于列表中的任意一个
ANY 需要和单行比较操作符一起使用,和子查询返回的某一个值比较
ALL 需要和单行比较操作符一起使用,和子查询返回的所有值比较
SOME 实际上是ANY的别名,作用相同,一般常使用ANY
三、sql题目解析
1.题目:返回job_id与11号员工相同,salary比99号员工多的员工姓名,job_id和工资 (单行)
SELECT name,job_id,salary FROM employee WHERE
job_id = (SELECT job_id FROM employee WHERE employee_id =11)
AND salary > (SELECT salary FROM employee WHERE employee_id =99);
2.题目:查询平均工资最低的部门id (多行)
SELECT department_id FROM employee GROUP BY department_id HAVING
AVG(salary) <=ALL (SELECT AVG(salary) FROM employee GROUP BY department_id);
总结
sql子查询用法示例