这是我的表结构:
Anees 1000.00
Rick 1200.00
John 1100.00
Stephen 1300.00
Maria 1400.00
我正在尝试查找 MAX(salary) 和人员姓名。
这是我使用的查询
选择 MAX(salary),emp_name FROM emp1
我明白了1400.00 and Anees.
虽然 1400 是正确的,但 Anees 是错误的,应该是 maria。我需要做哪些改变
MySQL 允许您在select语句中拥有不在聚合函数中且不在group by子句中的列。返回任意值。
做你想做的最简单的方法是:
select t.*
from t
order by salary desc
limit 1;
Gordon 解释了原因以及获得想要的最简单的方法。但是如果你出于某种原因想要使用MAX()你可以这样做
SELECT emp_name, salary
FROM emp1
WHERE salary =
(
SELECT MAX(salary) salary
FROM emp1
)
输出:
| EMP_NAME | 工资 | --------------------- | 玛丽亚 | 1400 |
这是SQLFiddle演示