【发布时间】:2021-01-09 10:47:31
【问题描述】:
我已经阅读了多篇文章,现在我对以下两种说法感到困惑。
- 如果我们使用没有分组的情况,那么整个表将充当单个组。
- 如果我们使用没有分组,那么每个表都充当一个单独的组。
在 MySQL 中哪一个是正确的? 例如,我有一个名为 ABC 的表如下:
| Wage |
_____________
| 4 |
| 8 |
| 28 |
| 90 |
如果我们使用以下查询
select wage
from ABC
having wage > 1
然后打印所有记录。所以每一行都是独立的组。
但如果我们使用:
select wage
from ABC
having wage = max(wage)
没有记录被打印出来。所以整个表作为一个组工作。
那么哪一个是正确的,为什么这两个查询显示不同的结果。
【问题讨论】:
-
MySQL 中哪一个是正确的? 两者都是。或者没有。在每种特定情况下,这些陈述中的哪些陈述与 HAVING 子句的存在无关。如果使用任何 aggergate 函数,则 (1) 为真,否则 (2) 为真。
标签: mysql group-by max greatest-n-per-group having-clause