我正在尝试在每个记录的三个不同字段中选择最大日期(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 - MySQL:获取几列的MAX或GREATEST,但具有NULL字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9831851/

10-11 02:48