微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL从一个表中选择all并从表关系中连接计数

我有两个表,post_categories和帖子.我正在尝试从post_categories;中选择*,但每次在帖子上使用帖子类别时,也会返回一个带有计数的临时列.

帖子

| id | name | post_category_id |
| 1  | test | 1                |
| 2  | nest | 1                |
| 3  | vest | 2                |
| 4  | zest | 3                |

发布类别

| id | name  |
| 1  | cat_1 |
| 2  | cat_2 |
| 3  | cat_3 |

基本上,我试图在没有子查询和连接的情况下这样做.像这样的东西,但在真正的psql中.

select * from post_categories some-type-of-join帖子,count(*)

理想情况下,这样做.

| id | name  | count |
| 1  | cat_1 | 2     |
| 2  | cat_2 | 1     |
| 3  | cat_3 | 1     |

非常感谢您的帮助:D

解决方法

您可以使用包含每个post_category_id计数的派生表,并将其连接到post_categories表

select p.*,coalesce(t1.p_count,0)
from post_categories p
left join (
    select post_category_id,count(*) p_count
    from posts
    group by post_category_id
) t1 on t1.post_category_id = p.id

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐