此问题来自 HackerRank(最高收入者)。
我想知道为什么
SELECT MAX(months * salary),
COUNT(*)
FROM Employee
WHERE (months * salary)
= MAX(months * salary)
这个查询不起作用,但是
SELECT MAX(months * salary),
COUNT(*)
FROM Employee
WHERE (months * salary)
= (SELECT MAX(months * salary) FROM Employee)
此查询有效。
能解释一下原因吗?
谢谢。
我正在尝试理解SQL的操作逻辑。
最佳答案
第一个查询不起作用,因为 MAX() 函数只能在查询的 SELECT 或 ORDER BY 子句中使用;如果没有适当的子句支持,则无法使用它。
您展示的第二个查询确实有效,因为它在 WHERE 子句中使用子查询从 Employee 表中获取 Month * salal 的最大值,然后将其与表中的值进行比较以确定哪些行匹配.
关于mysql - WHERE子句的运行逻辑是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74844685/