SQL获取具有相同id的所有行的计数

时间:2016-07-21 14:35:23

标签: php mysql sql mysqli

我有一个名为story_comment的表,其中包含(整数)列story_id和comment_id。我想知道每个故事有多少评论,但我不确定编写SQL查询的最佳方法。

查询应该返回一个包含story_id和num_comments列的表(其中num_comments是story_comment中的行数,其中story_id与该结果行中的story_id相同)。

期望的结果(示例):

story_id | NUM_COMMENTS

   4  |            17
   6  |             0
   7  |             4

我能够通过查询为一个特定的story_id执行此操作:

SELECT story_id, Count(story_id) as num_comments FROM story_comment where story_id=20;

但是我不确定如何为表格中的每个story_id做这个。旁注我将在php中使用mysqli进行此查询。

2 个答案:

答案 0 :(得分:3)

使用GROUP BY

SELECT story_id, Count(story_id) as num_comments FROM story_comment  
GROUP BY story_id
  

GROUP BY语句与聚合一起使用   函数用于将结果集分组为一列或多列。

答案 1 :(得分:1)

要使count()等聚合函数适用于列的每个唯一值而不是整个表,请添加group by

SELECT story_id, Count(*) as num_comments 
FROM story_comment
group by story_id