如何在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)))
答案 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;
这种问题可能是不良设计的症状。考虑是否有多个日期列是最佳策略。并使用适当的日期数据类型存储日期。假设您当前将日期存储为文本,而不是日期类型。