mysql知识点梳理(mysql知识大全)
导语:从零开始mysql知识点归纳总结(五) 多行子查询
【1】需求: 谁的工资比Abel 高?
方式一: 第一步线查出Abel共子 第二步进行过滤
SELECT salary
FROM employees
WHERE last_name = &39;;
SELECT first_name,last_name,salary
FROM employees
WHERE salary>11000
方式二: 自连接
SELECT e2.last_name,e2.salary
FROM employees e1 JOIN employees e2
ON e1.last_name = &39; AND e2.salary>e1.salary
方式三: 子查询
写子查询时,建议从里向外写
单行子查询 : 查询的结果只有一条数据
多行子查询 : 查询的结果有多条数据
SELECT first_name,salary
FROM employees
WHERE salary>(
SELECT salary
FROM employees
WHERE last_name=&39; -- 单行子查询
)
SELECT first_name ,salary
FROM employees
WHERE (
SELECT salary
FROM employees
WHERE last_name =&39;
)<salary
【2】 需求:返回job_id 与141号 员工相同,salary比143好员工 多的 员工姓名,job_id 和工资
两个条件 : 1.与141号员工的job_id相同 2.salary比143号员工的要多
SELECT first_name,job_id,salary
FROM employees
WHERE job_id =(
SELECT job_id
FROM employees
WHERE employee_id=141
)
AND salary>(
SELECT salary
FROM employees
WHERE employee_id=141
)
【3】需求:返回公司工资最少的员工的last_name,job_id 和salary 求最低工资
过滤: 薪水和最低工资相同的哪个员工
SELECT last_name,job_id,salary
FROM employees
WHERE salary=(
SELECT MIN(salary)
FROM employees
)
【4】需求:查询最低工资大于50号 部门最低工资的部门id 和其最低工资
SELECT department_id,MIN(salary)
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id
HAVING MIN(salary) > (
SELECT MIN(salary)
FROM employees
WHERE department_id = 50
)
in -- salary in (10,20,30) 只要等于其中的一个即可 (满足一个即可)
any -- salary > any (10,20,30) 只要大于其中的一个即可 (满足一个即可)
all -- salary > all (10,20,30) 必须大于所有的数据 (必须都得满足)
【5】需求 : 返回 其它部门 中比 job_id为‘IT_PROG’部门任意 工资低的员工的员工号、姓名、job_id 以及salary
SELECT employee_id,first_name,job_id,salary
FROM employees
WHERE salary<ANY(
SELECT salary
FROM employees
WHERE job_id=&39;
)AND job_id <>&39;
【6】需求:返回其它部门中比 job_id为‘IT_PROG’部门所有工资都低的 员工的员工号、姓名、job_id
SELECT employee_id,first_name,job_id,salary
FROM employees
WHERE salary < ALL(
SELECT salary
FROM employees
WHERE job_id=&39;
)AND job_id<>&39;
免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小楠创作整理编辑!