为什么必须使用子查询来选择具有最高薪水的ID?

时间:2019-01-22 00:32:28

标签: mysql max

我有一个面试问题,选择带有ID的最高工资。

正确答案应如下:

SELECT WORKER_REF_ID,  BONUS_AMOUNT FROM Practice.Bonus
WHERE BONUS_AMOUNT = (SELECT MAX(BONUS_AMOUNT) FROM Practice.Bonus);

为什么我们不应该在这里使用子查询而不是

SELECT WORKER_REF_ID,  BONUS_AMOUNT FROM Practice.Bonus
WHERE BONUS_AMOUNT = MAX(BONUS_AMOUNT);

抱歉,我是一个新手,有一个简单的问题。

1 个答案:

答案 0 :(得分:1)

这是因为max是一个聚合函数。

您可以将where子句视为对源数据中的每一行都进行一次评估的一组规则。

您需要提供诸如max之类的聚合函数,并带有一组要聚合的行。要求bonus_amount之类的单个值的“最大值”是没有道理的。