子查询
本文最后更新于 194 天前,其中的信息可能已经有所发展或是发生改变。

子查询

1.基础

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 的任何一个。

 SELECT * FROM t1 WHERE column1 = ( SELECT column1 FROM t2 );

2.标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。 常用的操作符:= <> > >= < <=

案例1: 查询 “销售部” 的所有员工信息

完成这个需求时,我们可以将需求分解为两步:

①:查询 “销售部” 部门ID

 
select id from dept where name = '销售部';

 

②:根据 “销售部” 部门ID, 查询员工信息

 select * from emp where dept_id = (select id from dept where name = '销售部');

案例2:

查询在 “方东白” 入职之后的员工信息

①. 查询 方东白 的入职日期

 select entrydate from emp where name = '方东白';
 

②. 查询指定入职日期之后入职的员工信息

 select * from emp where entrydate > (select entrydate from emp where name = '方东
 白'

3.列子查询

子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

常用的操作符:IN 、NOT IN 、 ANY 、SOME 、 ALL

 案例:
 查询 "销售部""市场部" 的所有员工信息
 分解为以下两步: 
 ①. 查询 "销售部""市场部" 的部门ID
 
 select id from dept where name = '销售部' or name = '市场部';
 ②. 根据部门ID, 查询员工信息
 
 select * from emp where dept_id in (select id from dept where name = '销售部' or 
 name = '市场部')
;
 
 查询比 财务部 所有人工资都高的员工信息
 ①. 查询所有 财务部 人员工资
 select id from dept where name = '财务部';
 select salary from emp where dept_id = (select id from dept where name = '财务部');
 ②. 比 财务部 所有人工资都高的员工信息
 select * from emp where salary > all ( select salary from emp where dept_id = 
 (select id from dept where name = '财务部') );
 

4.行子查询

子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。 常用的操作符:= 、<> 、IN 、NOT IN

 查询与 "张无忌" 的薪资及直属领导相同的员工信息 ;
 ①. 查询 "张无忌" 的薪资及直属领导
 select salary, managerid from emp where name = '张无忌';
 ②. 查询与 "张无忌" 的薪资及直属领导相同的员工信息 ;
 select * from emp where (salary,managerid) = (select salary, managerid from emp 
 
 where name = '张无忌');
 
 
 

5.表子查询

子查询返回的结果是多行多列,这种子查询称为表子查询。 常用的操作符:IN

 查询与 "鹿杖客" , "宋远桥" 的职位和薪资相同的员工信息
①. 查询 "鹿杖客" , "宋远桥" 的职位和薪资
 select job, salary from emp where name = '鹿杖客' or name = '宋远桥';
 ②. 查询与 "鹿杖客" , "宋远桥" 的职位和薪资相同的员工信息
 select * from emp where (job,salary) in ( select job, salary from emp where name = 
 '鹿杖客' or name = '宋远桥' );

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇