【发布时间】:2014-08-28 10:31:45
【问题描述】:
现在我已经回答了Select all forums and get latest post too.. how? 问题,我正在尝试编写一个查询来选择一个特定论坛中的所有主题,并按最新帖子的日期对它们进行排序(列“updated_at ")。
这又是我的结构:
forums forum_threads forum_posts
---------- ------------- -----------
id id id
parent_forum (NULLABLE) forum_id content
name user_id thread_id
description title user_id
icon views updated_at
created_at created_at
updated_at
last_post_id (NULLABLE)
我尝试编写此查询,它可以正常工作.. 但不如预期:它没有按线程的最后发布日期排序:
SELECT DISTINCT ON(t.id) t.id, u.username, p.updated_at, t.title
FROM forum_threads t
LEFT JOIN forum_posts p ON p.thread_id = t.id
LEFT JOIN users u ON u.id = p.user_id
WHERE t.forum_id = 3
ORDER BY t.id, p.updated_at DESC;
我该如何解决这个问题?
【问题讨论】:
-
将 t.id 从您的订单中删除
-
我不能因为 DISTINCT ON.. 否则会收到错误消息
-
(column "updated_at")不明确。请澄清:forum_posts.updated_at或forum_threads.updated_at?假设我的回答是前者,就像你的previous question 和你的查询所暗示的那样。
标签: sql postgresql greatest-n-per-group window-functions