回退至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