select d.dept_no,d.emp_no,salary
from dept_emp d
join salaries s
on d.emp_no=s.emp_no
where (d.dept_no,salary) in
(
select d.dept_no, max(s.salary) as maxSalary
from dept_emp d
join salaries s on d.emp_no=s.emp_no
group by d.dept_no
)
order by d.dept_no
group by根据字段分组了了之后,剩下的没被分组的字段有那么多行,如果没有聚合操作(例如取最大值,最小值,求和等),那么在低版本的mysql中可能会随机取一行的值返回,这肯定会出问题。所以在mysql之后的版本就限制了。
select中的字段必须要在group by中或者用聚合操作处理
Group by的字段select也必须有