gpt4 book ai didi

mysql - SQL 所有子查询的 max 都不同

转载 作者:行者123 更新时间:2023-11-29 06:44:02 24 4
gpt4 key购买 nike

mysql> select id,name from Employee where salary >= all (select salary from Employee);
Empty set (0.00 sec)

mysql> select id,name from Employee where salary >= all (select max(salary) from Employee);

+--------+------------+
| id | name |
+--------+------------+
| 001 | John |
+--------+------------+
1 row in set (0.00 sec)

为什么第一个查询返回0结果?它应该与第二个查询相同。工资列是十进制(12,2)。

最佳答案

不,它们不一样。第一个在一大组比较值中具有 NULL。某些东西不能大于(或小于或等于)NULL。因此,比较返回 NULL 。 。 。并且 ALL 不满足。

第二个返回 MAX() 值,因为 MAX() 忽略 NULL

编辑:

在子查询中使用过滤器不会使它们相同,如 rextester说明。

如果所有薪资值为NULL,则:

where salary >= all (select salary from e where salary is not null);

返回所有值。没有比较,因此all 为 true。

另一方面:

where salary >= all (select max(salary) from e);  -- all is irrelevant

不返回任何行,因为 NULL 比较不正确。

关于mysql - SQL 所有子查询的 max 都不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50294234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com