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

时间:2017-12-20 10:25:00

标签: mysql group-by

我有数据集,我可以使用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

有什么建议吗?谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用条件聚合来检查是否存在null然后显示null其他show max of date

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

DEMO

答案 1 :(得分:1)

使用未来的某个日期:

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

答案 2 :(得分:0)

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

SELECT event
      ,min(finished) 
FROM eventTable 
GROUP BY event