如果sql,mysql用较高的日期替换主日期

时间:2018-06-20 14:45:01

标签: mysql sql

我有一张桌子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时才起作用,但是当我尝试使用所有三个日期时,它不起作用

如何获得预期的输出?

3 个答案:

答案 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