mysql - WHERE子句的运行逻辑是怎样的?

标签 mysql

enter image description here

此问题来自 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/

相关文章:

php - 带有别名的 mysql 查询如何工作?

mysql - 如何在mySQL中链接两个关系表

php - Laravel 5 迁移出错

mysql - 为 Delphi 开发 MySQL.pas 包装器

mysql - 在子查询中初始化mysql中的用户定义变量

php - MySQL在多个表中搜索

php - where 和 while 循环似乎不起作用

php - 尝试用 php 发送 mysql 信息

c# - sql中2个选择之间的数学

java - 部署一个带有数据库的Java App,用户需要安装什么?