我有下表:
CREATE TABLE `entries` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我想按 updated_at
和 created_at
对条目进行排序。
但是它们中的任何一个都可以是NULL
。
我的查询:
SELECT *
FROM `entries`
ORDER BY `updated_at` DESC, `created_at` DESC, `id` DESC
但这会将所有未更新的条目放在结果的底部。
基本上我需要它们按可用的最后日期排序。如果没有可按 id
排序。
最佳答案
我相信你想要的是:
ORDER BY coalesce(updated_at, created_at) DESC, id DESC
这按更新日期(如果可用)或创建日期(如果不可用)排序。然后它按 id 降序排序。
关于mysql - 按 `updated_at` 和 `created_at` 排序,即使它们为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501293/