Mysql 使用GROUP BY从表中选择MAX()

Mysql 使用GROUP BY从表中选择MAX(),mysql,select,group-by,having,Mysql,Select,Group By,Having,我有一些桌子: name dep_id salary Vasia 5 1000 Oleg 5 1300 Vitia 4 1000 Sacha 3 1100 Kolia 5 1600 Lesha 2 1400 Sergey 4 1200 Marina 5 1300 Olga 5 1500 Igor 4 1400 Valia 3

我有一些桌子:

name    dep_id  salary
Vasia   5       1000
Oleg    5       1300
Vitia   4       1000
Sacha   3       1100
Kolia   5       1600
Lesha   2       1400
Sergey  4       1200
Marina  5       1300
Olga    5       1500
Igor    4       1400
Valia   3       1500
Erema   4       1500
我需要得到他所在部门中工资最高的员工的姓名

i、 我需要

 Lesha   1400
 Valia   1500
 Erema   1500
 Kolia   1600
我试过:

SELECT name, max(salary) FROM employees GROUP BY dep_id
但这会显示不正确的值

我该怎么做

select e1.*
from employees e1
join
(
  SELECT dep_id, max(salary) as msal
  FROM employees
  GROUP BY dep_id
) e2 on e1.dep_id = e2.dep_id
    and e1.salary = e2.msal
结果:

name    Sallary
---------------
Lesha   1400
Valia   1500
Erema   1500
Kolia   1600
演示

结果:

name    Sallary
---------------
Lesha   1400
Valia   1500
Erema   1500
Kolia   1600

中进行演示,尝试以下查询以获得所需的输出:

    select name,sallary from employees t1 where (dep_id,sallary) in
    (select dep_id,max(sallary) from employees group by dep_id);

请尝试以下查询以获得所需的输出:

    select name,sallary from employees t1 where (dep_id,sallary) in
    (select dep_id,max(sallary) from employees group by dep_id);