首页 > 解决方案 > 在表中添加一列以计算 MySQL 的最早日期

问题描述

我有一张这样的桌子:

表名

列: [id,date1,date2,date3,date4,date5]

(有些值为 NULL)

我想添加一列来计算每一行的 date1 到 date5 之间的最早日期,即

输出列: [id, date1, date2, date3, date4, date5, early_date]

我怎样才能做到这一点?

标签: mysql

解决方案


您可以使用 LEAST 将空值合并到遥远的未来日期。

DROP TABLE IF EXISTS T;
create table t (id int , d1 date,d2 date,d3 date);
    
insert into t values
  (1,'2021-01-15','2021-01-16','2021-01-13'),
  (2,null,'2021-01-22','2021-01-13');
    
select id, least(coalesce(d1,'2199-01-01'),
                 coalesce(d2,'2199-01-01'),
                 coalesce(d3,'2199-01-01'))
from t;

推荐阅读