mysq中的子查询

**当一个查询是另一个查询的条件时,称之为子查询
子查询(按结果划分):
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 同义词

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值