如何按不同表中相应行的数量对行进行排序?

时间:2019-02-07 06:33:18

标签: postgresql

我正在制作一个小型reddit克隆。有一个用于发布的表,一个用于评论的表(仅与上下文相关)和一个用于posts_comments的表。我正在尝试按照帖子的评论数对帖子进行排序。

这是posts_comments表的初始化

CREATE TABLE posts_comments (
    id SERIAL PRIMARY KEY,
    parent_id INTEGER,
    comment_id INTEGER,
    post_id INTEGER
)

这是我打的电话,但似乎不正确

SELECT * FROM posts p
JOIN posts_comments pc ON p.id = pc.post_id
ORDER BY (SELECT COUNT(*) FROM pc WHERE pc.post_id = p.id) DESC
LIMIT $1
OFFSET $2

我希望输出为帖子列表,并按链接到该帖子的评论数进行排序

1 个答案:

答案 0 :(得分:1)

也许是这样的:

"ReferenceError: sourcemaps is not defined"

您只需要帖子列表而不是评论。

SELECT
   COUNT(pc.post_id) OVER (PARTITION BY p.id)  AS  num_comments 
    ,* FROM posts p
   LEFT OUTER JOIN posts_comments pc ON p.id = pc.post_id
ORDER BY 1 DESC
LIMIT $1
OFFSET $2