Har*_*rev 2 mysql sql sql-order-by
我有下表:
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;
Run Code Online (Sandbox Code Playgroud)
我想按updated_at
和对条目进行排序created_at
。
但他们中的任何一个都可以NULL
。
我的查询:
SELECT *
FROM `entries`
ORDER BY `updated_at` DESC, `created_at` DESC, `id` DESC
Run Code Online (Sandbox Code Playgroud)
但这会将每个未更新的条目放在结果的底部。
基本上我需要按最后可用的日期对它们进行排序。如果没有可供排序的id
.
我相信你想要的是:
ORDER BY coalesce(updated_at, created_at) DESC, id DESC
Run Code Online (Sandbox Code Playgroud)
此命令按更新日期(如果可用)或创建日期(如果不可用)进行排序。然后按 id 降序排序。
归档时间: |
|
查看次数: |
2734 次 |
最近记录: |