首页 > 解决方案 > 如何按 created_date 和 updated_date 对数据进行排序

问题描述

我有 created_date、updated_date 和 updated_date 可以为空的数据。我正在尝试按 created_date 和 updated_date 对数据进行排序 如果数据得到了 updated_date 它将使用 updated_date 如果数据没有 updated_date 但 created_date > 其他数据 updated_date 它将首先出现

这是我使用“ORDER BY books. display_updatedDESC , books. display_createdDESC”的结果

updated_date 为空的数据属于。你能建议我吗?

标签: mysql

解决方案


你可以使用coalesce()

ORDER BY COALESECE(updated_date, created_date)

我更喜欢这个功能,ifnull()因为 coalesce 是 ANSI 标准,但你可以使用

ORDER BY IFNULL(updated_date, created_date)

这两种方法都测试是否updated_date为空,如果为空,则返回created_date,否则返回“updated_date”。以上两者都等同于 this case expression,这是另一种选择:

order by case when updated_date IS NOT NULL then updated_date else created_date end

推荐阅读