我有如下表:古怪的行为并具有MySQL时,最大== 0
mysql> select * from foo;
| id | value | bar |
+----+-------+------+
| 1 | 2 | 3 |
| 2 | 0 | 3 |
| 1 | 1 | 5 |
我想最大value
每个id
选择元组。但是,当max(value)
为0时,我没有得到结果。
mysql> select id,max(value),bar from foo group by id having max(value);
| id | max(value) | bar |
+----+------------+------+
| 1 | 2 | 3 |
这应该是这样的行为,如果是这样,为什么?
'select id,max(value)from foo group by id'就足以让每个id获得最大值。你不需要'having子句'。 –
已将max(value)翻译为真或非0.您可能想要从t中获得max(value)= SELECT max(value) – Mihai
除了'having'的行为并不像您想象的那样,让我获得最大价值*的记录。它会检查所使用的谓词是否为真。在你的情况下,谓词很简单,在第一种情况下,'max(value)'等于'0'。这在MySQL中被认为是错误的,所以没有任何返回。 –