mysql-如何在m​​ysql的3列行中获取最新日期?

时间:2019-02-20 14:01:15

标签: mysql

如何在mysql中按行3列获取最新日期?

|id | cont_no| date1     | date2      | date3    
|1  |    1   |01-02-2011 | 06-06-2015 | 22-03-2017    
|2  |    1   |21-02-2011 | 10-04-2012    
|3  |    2   |08-01-2011 |    
|4  |    1   |25-01-2011 |

我想明智地获得最大日期行,例如第一行获得2017年3月22日,第二行获得2012年10月4日。

我有这样的查询

SELECT date,date2,date3 FROM devi
WHERE date IN (SELECT max(date) FROM devi where date2 IN(SELECT max(date2) FROM devi where date3 IN (SELECT max(date3) FROM devi)))

1 个答案:

答案 0 :(得分:1)

您可以尝试为每行将几个呼叫链接到GREATEST

SELECT
    id,
    cont_no,
    GREATEST(
        GREATEST(COALESCE(date1, '1000-01-01'), COALESCE(date2, '1000-01-01')),
        COALESCE(date3, '1000-01-01')) AS max_date
FROM yourTable;

enter image description here

Demo

这种问题可能是不良设计的症状。考虑是否有多个日期列是最佳策略。并使用适当的日期数据类型存储日期。假设您当前将日期存储为文本,而不是日期类型。