outputing greatests()timestamps返回null sql,mysql

dkqlctbz  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(255)

我有三个日期数据a,日期b和日期main。所有的 TIMESTAMP 输出值如下2018-06-20 11:11:20。
有时date\u a或date\u b为空,date\u main始终存在(不为空)。
为什么在尝试使用greatest()比较它们时,它会输出空白(null)值“”?

GREATEST(MAX(l.date_a),MAX(r.date_b),p.date_main) AS date,
8cdiaqws

8cdiaqws1#

你可以用 COALESCE 处理 NULL 每个可为null的列的值:

GREATEST(COALESCE(MAX(l.date_a), '1900-01-01'),
         COALESCE(MAX(r.date_b), '1900-01-01'),
         p.date_main
)AS date

因为你想要最大的价值,我愿意交换 NULL 具有过去的某个日期(任意值)。

wj8zmpe1

wj8zmpe12#

如果 p.date_main 永远不会 NULL ,我将使用:

GREATEST(COALESCE(MAX(l.date_a), p.date_main),
         COALESCE(MAX(r.date_b), p.date_main),
         p.date_main
        ) AS date,
``` `GREATEST()` 以及 `LEAST()` (不像 `MIN()` 以及 `MAX()` )返回 `NULL` 如果任何一个论点 `NULL` . 所以,如果一个组中的所有值 `NULL` ,那么 `MIN()` 以及 `MAX()` 返回 `NULL` . 这个 `COALESCE()` 将值替换为 `p.date_main` 为了最大价值的比较。

相关问题