我要讓資料只要是最新的就排在最上面,如下呈現結果,但可能會有一種情況是更新時間會是 0000-00-00 00:00:00,就要搭配 IF 或 CASE WHEN

建立時間	                更新時間
2019-08-16 23:55:40	0000-00-00 00:00:00
2019-08-16 23:27:57	2019-08-16 23:55:19
2019-08-16 23:25:13	2019-08-16 23:25:13
2019-08-16 23:17:55	2019-08-16 23:17:55
2019-08-16 22:38:34	2019-08-16 22:38:34
2019-08-01 17:20:48	2019-08-16 17:45:43	
2019-08-15 10:24:18	2019-08-16 17:09:26
2019-08-13 12:25:33	2019-08-16 17:00:03
2019-08-15 10:51:46	2019-08-15 10:52:06
2019-08-15 10:27:39	2019-08-15 10:27:45

作法如下,優先呈度為 0000-00-00 00:00:00 > updated_at > created_at

ORDER BY
    -- IF (o.updated_at = '0000-00-00 00:00:00', 0, 1),
    -- 用上面的 IF 跟下面的 CASE 同效果
    CASE WHEN o.updated_at = '0000-00-00 00:00:00' THEN 0 ELSE 1 END,
    COALESCE(o.updated_at,  o.created_at)
DESC
Related posts 相關文章
使用連線控制插件提高 MySQL 安全性
More...
使用驗證插件提高 MySQL 密碼安全性
More...
用 pv 查看 mysql restore 還原資料進度
More...
使用 sysbench 壓力測試 mysql
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。