尝试分别计算某种类型的入口数量

时间:2019-05-03 10:42:36

标签: mysql sql

我有一个名为posts的表,它有一个名为forum_type_id的字段。

另一个名为forum的表具有一个名为forum_type和一个id的字段。

论坛表的ID代表其用于与forum_type_id表中的posts关系的类型

现在,在我的数据库中。

  • 在帖子中,我有3个带有{​​{1}}的条目(代表我的论坛表的类型2为“问题”。)

  • 2个带有forum_type_id = 2的条目(代表我的论坛表的类型1为“常规”)

我正在尝试进行查询,以分别获取每种“类型”的数量

我尝试这样的事情。

forum_type_id = 1

我希望得到这个示例

generalCount = 2;

questionsCount = 3;

但是它做一个加法运算,并只返回一行加上2个数字

2 个答案:

答案 0 :(得分:1)

您可以尝试使用条件聚合

SELECT 
    count(case when posts.forum_type_id = '1' then 1 end) AS generalCount
,
    count(case when posts.forum_type_id = '2' then 1 end) AS questionsCount
,
    forum.id
FROM forum
group by forum.id 

答案 1 :(得分:1)

group by怎么样?

SELECT p.forum_type_id, COUNT(*)
FROM posts p
GROUP BY p.forum_type_id;

如果愿意,可以从论坛表中获取名称:

SELECT f.?, COUNT(*)  -- use the column with the name you want
FROM posts p JOIN
     forums f
     ON p.forum_type_id = f.forum_type_id
GROUP BY p.?;

您可以将其旋转以将值放入列而不是行中,但这不是必需的。