SQL语言中的子查询

笔记链接

子查询

通过select的查询值来作为一个查询的条件

类型结果(子查询的返回值)
标量子查询单行单列
列子查询单行多列
行子查询多行单列
表子查询多行多列
标量子查询

返回值为一个值,所以只需要=就行

select *
from tb_emp
where dept_id = (select id from tb_dept where name = '教研部') ;
列子查询

返回值是一个字段的多个值,使用in替换标量的=就行

select *
from tb_emp
where dept_id in (select id 
                  from tb_dept 
                  where name = '教研部' or name = '学工部') ;

这样就可以查到tb_dept表中name字段等于学工部或者教研部的人。

行子查询

返回值是一个多字段单值,需要列表与列表比较

select *
from tb_emp
where (job, dept_id) in (select job, dept_id from tb_emp where name = 'XXX') ;

查询这张表里工作和部门和XXX相同的人。

表子查询

返回值是一张临时表,给临时表起别名,可以在本次语句里当正常表使用,

select e.*, d.name
from (select * from tb_emp where  entrydate > '2006-01-01') e, tb_dept d
where e.dept_id = d.id;

PS.一定要起别名!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值