五、多表查询-4.5子查询-表子查询

一、概述

子查询返回的结果是多行多列,这种子查询称为表子查询。

常用的操作符:in

经常出现在from之后

二、演示

【例1】查询与"鹿掌客"、"宋院桥"的职位和薪资相同的员工信息

1、查询与"鹿掌客"、"宋院桥"的职位和薪资

返回的结果是一个表

2、查询与"鹿掌客"、"宋院桥"的职位和薪资相同的员工信息

3、合并两个,变为子查询

【例2】查询入职日期是"2006-01-01"之后的员工信息,及其部门信息

1、查询与入职日期是"2006-01-01"之后的员工信息

2、查询这部分员工对应的部门信息

【代码】

sql 复制代码
-- 表子查询
-- 1、查询与"鹿掌客"、"宋院桥"的职位和薪资相同的员工信息
--    a.查询与"鹿掌客"、"宋院桥"的职位和薪资
select job, salary from emp1 where name = '鹿掌客' or name = '宋院桥';  -- 返回('职员',37500),('销售',4600)
--    b.查询与"鹿掌客"、"宋院桥"的职位和薪资相同的员工信息
select * from emp1 where (job, salary) in (('职员', 37500),('销售', 4600));
-- 合并两个,变为子查询
select * from emp1 where (job, salary) in (select job, salary from emp1 where name = '鹿掌客' or name = '宋院桥');

-- 2、查询入职日期是"2006-01-01"之后的员工信息,及其部门信息
--    a.查询与入职日期是"2006-01-01"之后的员工信息
select * from emp1 where entrydate > '2006-01-01';    -- 返回一个表
--    b.查询这部分员工对应的部门信息
select e.*, d.* from (select * from emp1 where entrydate > '2006-01-01') e left join dept1 d on e.dept_id = d.id;
相关推荐
昆曲之源_娄江河畔几秒前
DBGridEh Footer的使用
前端·数据库·delphi·dbgrideh
邮专薛之谦12 分钟前
MySQL 完整SQL指令大全(含详细解释+实战示例)
数据库·sql·mysql
YL2004042621 分钟前
MySQL-进阶篇-SQL优化
数据库·sql·mysql
Irissgwe31 分钟前
redis之典型应用-缓存cache
数据库·redis·缓存·缓存击穿·缓存雪崩·redis淘汰策略
Shely201743 分钟前
数据库索引
数据库·mysql
我也不曾来过11 小时前
Mysql
数据库·mysql
小陈工1 小时前
Python异步编程进阶:asyncio高级模式与性能调优
开发语言·前端·数据库·人工智能·python·flask·numpy
gQ85v10Db1 小时前
Redis分布式锁进阶第三十一篇
数据库·redis·分布式
身如柳絮随风扬1 小时前
购物车服务设计:基于 Redis Hash 的高效实现
数据库·redis
观测云1 小时前
观测云4月产品升级报告 | 统一目录、Obsy AI 全新上线,基础设施、场景、监控告警、管理多项能力升级
数据库·人工智能·可观测性·产品迭代·观测云