我有一张桌子post
,其中有此日期安排:
表格帖子
id_post | post | date_a | date_b | date_main
1 hi1 00:01:00 00:02:00 00:00:01
2 hi2 00:00:02
3 hi3 00:05:00 00:00:03
4 hi4 00:08:00 00:05:00 00:00:04
5 hi4 00:09:00 00:00:05
我需要用较高的日期替换date
并使用默认的date_main
预期产量
id_post | post | date
1 hi1 00:02:00
2 hi2 00:00:02
3 hi3 00:05:00
4 hi4 00:08:00
5 hi4 00:09:00
sql尝试
SELECT id_post,post,IF(date_a IS NOT NULL, date_a,date_main) as date
FROM posts
WHERE 1
我尝试使用if()
,但仅在有date_a和date_main或date_b和date_main时才起作用,但是当我尝试使用所有三个日期时,它不起作用
如何获得预期的输出?
答案 0 :(得分:2)
用于比较的用例
SELECT
id_post,
post,
case when date_a > date_main
then date_a
else date_main end as date
FROM posts
WHERE 1
答案 1 :(得分:2)
如果您在数据库中使用NULL值,这将起作用。假定date_main始终是最小数字。
SELECT id_post, GREATEST(COALESCE(date_a,0),COALESCE(date_b,0), COALESCE(date_main,0) as dt1 FROM `posts`
答案 2 :(得分:1)
您可以在sql中使用CASE
示例:
case
when date_a is not null then date_a
when date_b is not null then date_b
else date_main
end as datee