SQL select 最近日期多列

SQL select most recent date multiple columns

我有一个 table,其中包含一个 ID 和 2 个超过 2000 行的日期时间字段:

示例:

id created_at            updated_at
1  2015-07-07 13:39:38   NULL
2  2015-08-06 14:09:14   2015-11-18 10:20:55
3  2015-08-07 11:01:48   2015-11-12 16:43:11
...

如何获得按最近日期时间排序的列表?

Order by updated_at DESC, created_at DESC 给我一个错误的结果。它按 updated_at 排序,然后按 created_at 排序,但没有给我预期的结果。

我也用 CASE WHEN 尝试了几种解决方案,但它对我不起作用。

示例的正确排序列表:

id created_at            updated_at
1  2015-08-06 14:09:14   2015-11-18 10:20:55
2  2015-08-07 11:01:48   2015-11-12 16:43:11
3  2015-07-07 13:39:38   NULL
...

尝试GREATEST

http://www.w3resource.com/mysql/comparision-functions-and-operators/greatest-function.php

ORDER BY GREATEST(created_at, update_at) DESC

编辑

您应该检查如何处理空值。我想使用 0 或者可能使用默认日期 '1900-1-1' 请测试一下。

ORDER BY GREATEST(
                  COALESCE(created_at, 0),
                  COALESCE(update_at, 0)
                 ) DESC

也许是这样的?

select *
from tablename
order by case when created_at is null or created_at < update_at then update_at
              else created_at end desc

如果 created_at 为 NULL,或者 created_at 在 update_at 之前,则 update_at 是最近的。否则 created_at 是最新的。按该值 desc.

排序

这也适用于没有 MySQL 的 GREATEST 功能的 dbms 产品。如果 运行 MySQL,请查看 Juan Carlos Oropeza 的回答而不是这个。