如果说:

查询每一个部门最低工资的雇员信息



1 查询每一个部门的最低工资

select deptno, min(sal) min_sal from emp group by deptno;

查看员工信息每个部门的最低工资


2 同最低工资关联人员信息

select e.* from emp e, (select deptno, min(sal) min_sal from emp group by deptno) s
where e.deptno = s.deptno
and e.sal = s.min_sal;

查看员工信息每个部门的最低工资


inkeyword方法


inkeyword是这样的场景easy想到的一个方法,先查询出部门的最低工资,然后匹配最低工资的雇员信息。


select * from emp where sal in (select min(sal) from emp group by deptno);

查看员工信息每个部门的最低工资


错误解析


in 方法存在一个问题,当两部门中有多个同样的工资值时会产生错误的结果


如今讲emp 中empno 为 1234 的用户部门改动为 20

update emp set deptno = 20 where empno = 1234;

然后再使用in查询方法查部门最低工资的员工信息

查看员工信息每个部门的最低工资


这时,empno 为 1234 的员工工资与deptno为10的部门最低工资同样,所以使用in查询就查出了这个最低工资。


可是使用 关联子查询 的方法查询,

查看员工信息每个部门的最低工资


对比总结,在班上似询问,警告in keyword直接查询,相反,使用一个相关子查询,检查一步一步。



相关文章:

  • 2021-05-08
  • 2021-07-13
  • 2021-05-02
  • 2021-06-26
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2021-11-09
  • 2022-12-23
  • 2021-05-15
  • 2022-12-23
相关资源
相似解决方案