Postgresql按联接后计数和排序
我的webapp中有帖子、评论和喜欢的内容。我想按“分数”排序,分数只是喜欢和评论的总和 我正在尝试这样做:Postgresql按联接后计数和排序,sql,postgresql,Sql,Postgresql,我的webapp中有帖子、评论和喜欢的内容。我想按“分数”排序,分数只是喜欢和评论的总和 我正在尝试这样做: SELECT posts.id, COUNT(comments.id) AS c, COUNT(likes.id) AS l FROM posts LEFT JOIN comments ON posts.id = comments.post_id LEFT JOIN likes ON posts.id = likes.post_id GROUP BY posts.id ORDE
SELECT posts.id, COUNT(comments.id) AS c, COUNT(likes.id) AS l
FROM posts
LEFT JOIN comments ON posts.id = comments.post_id
LEFT JOIN likes ON posts.id = likes.post_id
GROUP BY posts.id
ORDER BY SUM(c,l) desc;
但是我得到一个关于c列不存在的错误
或者这个:
SELECT posts.id, sum(count(comments.id), count(likes.id)) AS score
FROM posts
LEFT JOIN comments ON posts.id = comments.post_id
LEFT JOIN likes ON posts.id = likes.post_id
GROUP BY posts.id
ORDER BY score desc;
但是我在名称和参数类型上有一个错误
是否有其他方法编写此查询以使其正常工作?谢谢 您的思路大致正确,但出于某种原因,您尝试使用简单加法的总和:
SELECT posts.id, count(comments.id) + count(likes.id) AS score
FROM posts
LEFT JOIN comments ON posts.id = comments.post_id
LEFT JOIN likes ON posts.id = likes.post_id
GROUP BY posts.id
ORDER BY 2 desc;
我在这里使用了顺序位置排序顺序,即按第二列排序。您的思路大致正确,但出于某种原因,您尝试使用简单加法的总和聚合整数:
SELECT posts.id, count(comments.id) + count(likes.id) AS score
FROM posts
LEFT JOIN comments ON posts.id = comments.post_id
LEFT JOIN likes ON posts.id = likes.post_id
GROUP BY posts.id
ORDER BY 2 desc;
我在这里使用了顺序位置排序顺序,即按第二列排序。播种准确的错误。播种准确的错误。哦,老兄,我在这一列上做了一个“DUH”!我已经有一段时间没有做过比ActiveRecord=P更多的事情了。非常感谢!哦,老兄,我在这件事上做了个“DUH”!我已经有一段时间没有做过比ActiveRecord=P更多的事情了。非常感谢!