MySQL数据库:第九章:子查询
回退至Mysql数据库理论与实战
#子查询
概念:出现在其他语句内部的select语句,称为子查询或内查询
其他语法:可以是select语句,也可以是create、insert、update等。只是select语句出现的较多
外面如果是select语句,称为主查询或外查询
位置:
子查询可以放在select语句中的select后面、from后面、where或having后面、exists后面
分类:(放在where或having后面)
单行子查询:子查询的结果只有一行
多行子查询:子查询的结果可以有多行
特点:
①子查询一般需要使用小括号括起来,为了提高阅读性
②子查询一般放在条件的右侧
③子查询优先于主查询执行,主查询使用到了子查询的结果
④单行子查询一般搭配单行操作符使用
单行操作符:> < = <> >= <=
多行子查询一般搭配多行操作符使用
多行操作符:in/not in、any、all
#一、单行子查询
注意:
单行子查询的结果肯定是一行一列,不能是多行,也不能是空值
#案例1:谁的工资比 Abel 高?
#①查询Abel的工资
SELECT salary
FROM employees
WHERE last_name = ‘Abel’
#②查询哪个员工的工资>①
SELECT last_name,salary
FROM employees
WHERE salary>(
SELECT salary
FROM employees
WHERE last_name = ‘Abel’
);
#案例2:返回job_id与141号员工相同,salary比143号员工多的员工姓名,job_id 和工资
#①查询141号员工的job_id
SELECT job_id
FROM employees
WHERE employee_id = 141
#②查询143号员工的salary
SELECT salary
FROM employees
WHERE employee_id = 143
#③查询job_id = ① 并且salary>②的员工姓名,job_id 和工资
SELECT last_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 = 143
更多内容请见原文,原文转载自:https://blog.csdn.net/weixin_44519496/article/details/120684170