dcsxlh

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

子查询

 

一、什么是子查询?

一个查询嵌套另一个查询

例如:

select dept1 from dept where dept_name="iT技术"; #dept 中"iT技术"的编号103

select sid from emp where dept2=103 #103=前面的语句
select sid from emp where dept2=(select dept1 from dept where dept_name="iT技术" )

 

二、子查询分类?

1、标量子查询   (返回一个值)一行一列

2、列子查询(返回一列多行)

3、行子查询(返回一行,多列)

4、表子查询(返回一个表)   重点

 

三、详细讲解?

1、标量子查询(返回一个值)

标量子查询,把一个sql执行返回的一个值,作为另一个sql的条件,得到的结果是一行一列,一般出现在where之后

例如:

select   sid  from emp where  dept2=(select dept1 from  dept where  dept_name="iT技术" )

 

备注点:标量子查询允许使用比较符号

>,< ,=,!=,>=,=< ,<>

 

2、列子查询(返回一列值)

定义:返回的结果是一列值

select dept1 from  dept where  dept_name="iT技术" or dept_name="财务" ;    #结果:101 ,103

select   sid  from emp where  dept2  in (select dept1 from  dept where  dept_name="iT技术" or dept_name="财务"  )

 3、行子查询(返回一行多列)

指子查询返回的结果是一行多列 ,一般出现在where后面

select  age,incoming  from  emp where  name="刘十"

select * from emp where (age,incoming) =any (select age,incoming from emp where name="刘十")

 

 

 

 

 

 4、表子查询(重点)

返回的结果是一个表(多行多列),一般在from  后面

 

 案例1:

 

案例2:

select * from (SELECT sid,name,dept_name,dept1 from dept left join emp on dept.dept1=emp.dept2)s ,(SELECT sid,name,dept_name,dept2 from dept left join emp on dept.dept1=emp.dept2)c where s.dept1=c.dept2
and s.dept_name= "财务"

 

1.列出每个部门的平均收入及部门名称;

 2.财务部门的收入总和; 

3.It技术部入职员工的员工号 

posted on   多测师_肖sir  阅读(114)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2020-12-18 第二个月课堂013讲解robotfamework之三层封装和自定义关键字(004)
2020-12-18 rf源码
 
点击右上角即可分享
微信分享提示