记录mysql的一个查询
笔记而已,欢迎大佬指证
有一个员工表dept_emp简况如下:
有一个薪水表salaries简况如下:
获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号升序排列,以上例子输出如下:
查询语句如下:
select r.dept_no,ss.emp_no,r.maxSalary from (
select d.dept_no,max(s.salary)as maxSalary from dept_emp d,salaries s
where d.emp_no=s.emp_no
group by d.dept_no)
as r,salaries ss,dept_emp dd
where r.maxSalary=ss.salary
and r.dept_no=dd.dept_no
and dd.emp_no=ss.emp_no
order by r.dept_no
使用子查询所解决的问题是:所查询的MAX(SALARY) 和 emp_no 不一定对应,GROUP BY 默认取非聚合的第一条记录
查询过程(便于理解,salary多添加了一组)