我有一个名为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进行此查询。
答案 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