mysq中的子查询

本文深入探讨了SQL中子查询的应用,包括表子查询、行子查询、列子查询和标量子查询,并通过实例展示了如何使用比较运算符、IN、ANY、ALL和SOME关键字进行复杂查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**当一个查询是另一个查询的条件时,称之为子查询
子查询(按结果划分):
1.表子查询:多行多列 类似这种 select * from (select t1 from tab2 where id=1 ) 或者select id,name, (select one) as test from tab1
2.行子查询:一行多列
3.列子查询:多行一列
4.标量子查询:一行一列* 类似这种 select name from tab1 where id = 2;*

例如两个表tab1 tab2

tab1                                          
id   name    age   tab2_id
1   a         11    2
2   b         20    4
3   c         18    1
4   d         16    3

*

> tab2 
> id   is_adult      Occupation      t1 
> 1     1             大学           tab1 
> 2     0             小学           tab1 
> 3     0              高中          tab1 
> 4     1             大学           tab1

比较运算符中的子查询
select * from tab1 where age=(select max(age) from tab1);

使用in的子查询
例如 查找在读大学的人员姓名
select name from tab1 where tab2_id in(select id from tab2 where Occupation = ‘大学’)
*

使用any的子查询
定义 当某个操作数(字段)对于该列子查询的其中任一个值,都满足该比较运算符,则就算满足条件
例如
select * from tab1 where id> any(select id from tab2);
取出结果为

tab1

id   name    age   tab2_id
2   b         20    4
3   c         18    1
4   d         16    3

只有tab1中 id值满足 大于 tab2中id其中的一个值,则条件成立

使用all的子查询
定义 当某个操作数(字段)对于该列子查询的其中所有值,都满足该比较运算符,则就算满足条件
例如
select * from tab1 where id>= any(select id from tab2);
运算结果

tab1

id   name    age   tab2_id
4   d         16    3

some的子查询
与any 同义词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值