MySQL:获取几列的MAX或GREATEST,但具有NULL字段

我正在尝试在每个记录(MySQL)的三个不同字段中选择最大日期,因此,在每一行中,我都有date1,date2和date3:始终填充date1,date2和date3可以为NULL或为空GREATEST语句为简单明了,但对NULL字段没有影响,因此效果不佳:

SELECT id, GREATEST(date1, date2, date3) as datemax FROM mytable

我也尝试过更复杂的解决方案,例如:

SELECT

CASE

WHEN date1 >= date2 AND date1 >= date3 THEN date1

WHEN date2 >= date1 AND date2 >= date3 THEN date2

WHEN date3 >= date1 AND date3 >= date2 THEN date3

ELSE date1

END AS MostRecentDate

此处存在相同的问题:NULL值是返回正确记录时的重大问题

拜托,你有解决办法吗?提前致谢....

回答:

采用 COALESCE

SELECT id, 

GREATEST(date1,

COALESCE(date2, 0),

COALESCE(date3, 0)) as datemax

FROM mytable

更新:以前使用的答案IFNULL确实有效,但是正如Mike Chamberlain在评论中指出的那样,COALESCE实际上是首选方法。

以上是 MySQL:获取几列的MAX或GREATEST,但具有NULL字段 的全部内容, 来源链接: utcz.com/qa/434423.html

回到顶部