2

这是我的表结构:

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。我需要做哪些改变

4

2 回答 2

3

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

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

select t.*
from t
order by salary desc
limit 1;
于 2013-07-23T23:06:39.173 回答
1

Gordon 解释了原因以及获得想要的最简单的方法。但是如果你出于某种原因想要使用MAX()你可以这样做

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

输出:

| EMP_NAME | 工资 |
---------------------
| 玛丽亚 | 1400 |

这是SQLFiddle演示

于 2013-07-23T23:14:36.387 回答