数据库MySQL-----------子查询



1.查找Tomy所在部门名称
多表连接:
select name,deptname from emp inner join dept on emp.deptno=dept.deptno where name='tomy';
子查询:select deptname from dept where deptno=(select deptno from emp where name='tomy');

这两种语句都可以得到以下的结果


根据上一篇博客,可以清楚的理解第一种方法,而第二种则是子查询的方法,这个方法的括号中是一个select语句,说明括号中的语句有一个返回值,这个返回值和where部分组成了一个查询条件,就得到了以上的结果



2.查找拥有工资3000元及以上员工的部门名称

select deptname from dept where deptno in(select distinct deptno from emp where salary>=3000);


要理解这个语句需要明白括号里语句的返回值是什么,括号里的返回值是emp表中工资大于等于3000人所在的部门编号,distinct这是个关键字,作用是去重,去掉重复的数据;


3.查找1号部门工资最高的人
select name from emp  where deptno=1 and salary =(select max(salary) from emp where deptno=1);


max(参数);这是一个聚合函数,系统提供的函数,括号中的语句的意思是:找出表emp中deptno=1的数据中工资最高的数据,返回值是工资,然后作为条件进行查询



4.查找每个部门工资最高的人
select name,salary from emp e1 where salary=(select max(salary) from emp e2 where e1.deptno=e2.deptno);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值