首页 > 解决方案 > 根据 Mysql 中的 empid wise 获取最高 Sal 行

问题描述

我有 3 张桌子

Employee
---------------
ID Name
1  John 
2  Kelly
3  Leo

Dept
-------
ID  Name
1   Finance
2   A/c
3   Marketing


Accout
--------------------
Id EmpId Dept Sal
1   1     1    25,000
2   1     2    30,000
3   2     2    20,000
4   2     1    15,000
5   3     3    20,000

现在我需要用适当的数据获得最高薪水行。

就像 Emp id 1 最高 sal = 30,0000 所以从 a/c 表中获取整行 id = 2 Emp id 2 最高 Sal = 20,000 所以从 a/c 表中获取整行 id = 3

我尝试

SELECT E.id,E.name AS emp_name,D.name AS dept_name,
        A.Dept as dept_id,max(A.sal) AS max_sal 
FROM Accout A 
    JOIN Employee E ON A.EmpId = E.ID 
    JOIN Dept D ON A.Dept = D.Id 
Group by EmpId

所以我得到了像

Id  emp_name dept_name dept_id max_sal
1     John     Finance   1      30,000
2     Kelly     A/c      2      20,000
3     Leo    Marketing   3      20,000

但我需要这样的结果

Id  emp_name dept_name dept_id max_sal
1     John       A/c     2      30,000
2     Kelly     A/c      2      20,000
3     Leo    Marketing   3      20,000

请让我知道这怎么可能,这样我才能得到正确的输出。

提前致谢。

标签: phpmysql

解决方案


GROUP BY我没有使用 ,因为ORDER BY你说你只想要最高到最低的薪水,加上我删除了max()

SELECT E.id
        E.name AS emp_name,
        D.name AS dept_name,
        A.DeptId as dept_id,
        A.sal AS max_sal
FROM Account A
JOIN Employee E ON A.EmpId = E.ID
JOIN Dept D ON A.DeptId = D.Id
ORDER BY max_sal DESC
LIMIT 3

LIMIT如果要限制返回的行,可以使用


推荐阅读