分组后的MySQL获取优先级为null的值

问题描述 投票:0回答:3

我有数据集,我可以使用group by。如果可用,我希望最好得到null值(想知道事件是否完成)

示例eventTable:

ID event finished
1 event1 2017-01-01
2 event2 NULL
3 event3 2017-05-18
4 event1 NULL

SQL:

SELECT event, max(finished) FROM eventTable group by event 

给出不需要的结果

event1 2017-01-01
event2 NULL
event3 2017-05-18

我想要的结果是(在event1看到NULL值):

event1 NULL
event2 NULL
event3 2017-05-18

有什么建议?谢谢。

mysql group-by
3个回答
2
投票

您可以使用条件聚合来检查是否存在null然后显示null其他显示最大日期

SELECT event, 
case when sum( finished is null) > 0
     then null else max(finished)
end as finished
FROM eventTable 
group by event 

DEMO


1
投票

使用未来的某个日期:

SELECT event, max(ifnull(finished, '2999-01-01')) 
FROM eventTable 
group by event ;

0
投票

使用MIN而不是MAX。试试这个 -

SELECT event
      ,min(finished) 
FROM eventTable 
GROUP BY event 
© www.soinside.com 2019 - 2024. All rights reserved.