【发布时间】:2022-11-28 16:56:23
【问题描述】:
我正在尝试为我的一些程序员朋友建立一个博客类型的网站,我们可以在其中分享有关代码、Linux、软件等的技巧和文章。
我正在 PostgreSQL 中构建发布系统,到目前为止一切顺利。然而,让我感到困惑的是使用 ORDER BY 对两个 timestamptz 列进行排序。我希望能够有一个创建的时间戳,还有一个修改后的时间戳。这应该按最新帖子排序(最近创建或修改)。我想出了这个 - 帖子 135 应该在最上面,但修改后的帖子优先。
我希望修改和创建的字段都可用,这样我就可以显示:“创建于 xx-xx-xx,最后更新 yy-yy-yy”。
SELECT posts.postid, users.id, posts.modified, posts.created
FROM posts
JOIN users ON posts.userid=users.id
WHERE posts.isdraft=false
ORDER BY posts.modified DESC NULLS LAST, posts.created DESC;
postid | id | modified | created
--------+-----+-------------------------------+-------------------------------
100 | 999 | 2022-11-28 01:57:07.495482-06 | 2022-11-27 21:43:34.132985-06
115 | 111 | 2022-11-28 01:55:05.9358-06 | 2022-11-27 21:43:34.137873-06
135 | 999 | | 2022-11-28 02:28:20.64009-06
130 | 444 | | 2022-11-28 01:42:49.301489-06
110 | 42 | | 2022-11-27 21:43:34.137254-06
(JOIN 的原因是我需要附加到用户 ID 的用户名,但我在这里省略了它以节省空间)
感谢所有帮助,谢谢!
【问题讨论】:
标签: sql postgresql