MYSQL 子查询
标量子查询
#标量子查询
#1.查询“研发部”的所有员工信息
# a.查询“研发部”部门id
select id from dept where name='研发部';#b.根据销售部部门id,查询员工信息
select * from emp where dept_id=(select id from dept where name='研发部');#2.查询在王金彪入职之后的员工信息select enterdata from emp where name ='王金彪';select * from emp where enterdata>(
select enterdata from emp where name ='王金彪');
列子查询
就像这种,单列多行
#列子查询
#1.查询研发部和市场部所有员工信息
#a查询研发部和市场部的ID
select id from dept where name ='研发部'or name='市场部';# b 根据部门id 查询员工信息
select * from emp where dept_id in (1,2);select * from emp where dept_id in (select id from dept where name ='研发部'or name='市场部');#2.查询比市场部所有人工资都高的员工信息
#a .查询所有市场部 人员工资
select id from dept where name ='市场部';select salary from emp where dept_id=(select id from dept where name ='市场部');select * from emp where salary>all (select salary from emp where dept_id=(select id from dept where name ='市场部'));#3.查询比总经办其中任意一人工资高的员工信息
#a.查询总经办所有人工资
select id from dept where name ='总经办';
select salary from emp where dept_id=(select id from dept where name ='总经办');select * from emp where salary> any(select salary from emp where dept_id=(select id from dept where name ='总经办'));
行子查询
子查询返回的结果是一行(可以是多列),这种子查询称为行子查询
表子查询
表子查询是 SQL 中强大的查询工具,它允许将一个查询的结果作为另一个查询的数据源,适用于复杂数据关联和过滤场景。
#表子查询
#1.查询与“金钰”和“陈秋婷”的年龄和职位相同的员工信息
#a.查询“金钰”和“陈秋婷”的年龄和职位
select age,job from emp where name='金钰'or name ='张若涵';
select * from emp where (age,job) in (select age,job from emp where name='金钰'or name ='张若涵');
#这里面中的(age,job),只要满足这两个中的一个就行了
#2.查询入职时期是2000-01-01之后的员工信息,及部门信息
#a- 入职日期是2000-01-01之后的员工信息
select * from emp where enterdata>'2000-01-01';#b-查询这部分员工,对应的部门信息:
select * from (select * from emp where enterdata>'2000-01-01') e left join dept d on e.dept_id=d.id;
将查询出来的表直接用来使用。