当max == 0时,max和奇数行为在MySQL中出现

时间:2017-04-04 12:58:47

标签: mysql having

我有下表:

DELETE /api/v1/series

我想为每个mysql> select * from foo; | id | value | bar | +----+-------+------+ | 1 | 2 | 3 | | 2 | 0 | 3 | | 1 | 1 | 5 | 选择最大value的元组。但是,当id为0时,我没有得到结果。

max(value)

这应该是这样的,如果是这样,为什么?

2 个答案:

答案 0 :(得分:1)

HAVING不能以任何方式用于从GROUP BY子句中使用的字段定义的一组记录中选择记录。它更适用于整个集团。

因此,在您的情况下,您必须进行自联接以获取其余的表字段:

select t1.id, t1.value, t1...
from foo as t1
join (
   select id, max(value) as max_value
   from foo 
   group by id
) as t2 on t1.id = t2.id and t1.value = t2.max_value

答案 1 :(得分:0)

恕我直言,你可以乘以(id x值)得到MAX夫妇。

create table foo(id int, value int);
insert into foo values
(2,0),
(1,0),
(2,1),
(3,0),
(2,2);

select id, value
from foo
order by (id * value) desc
limit 1;

id | value
 2 |  2

drop table foo;