SQL max()函数为具有最大值的行返回错误的值

时间:2013-07-23 23:03:47

标签: mysql sql max

这是我的表格结构:

Anees   1000.00
    Rick    1200.00
    John    1100.00
    Stephen 1300.00
    Maria   1400.00

我想找到MAX(工资)和人名。

这是我使用的查询

选择MAX(薪水),emp_name 来自emp1

我得到1400.00 and Anees.

虽然1400是正确的,但Anees是错的,应该是玛丽亚。我需要做出哪些改变

2 个答案:

答案 0 :(得分:3)

MySQL允许您在select语句中包含不在聚合函数中且不在group by子句中的列。返回任意值。

做你想做的最简单的方法是:

select t.*
from t
order by salary desc
limit 1;

答案 1 :(得分:1)

戈登给出了解释为什么以及最简单的方法来获得你想要的东西。但如果您出于某种原因想要使用MAX(),您可以这样做

SELECT emp_name, salary
  FROM emp1 
 WHERE salary = 
(
  SELECT MAX(salary) salary
    FROM emp1
)

输出:

| EMP_NAME | SALARY |
---------------------
|    Maria |   1400 |

这是 SQLFiddle 演示