SQL 获取具有相同 id 的所有行的计数
Posted
技术标签:
【中文标题】SQL 获取具有相同 id 的所有行的计数【英文标题】:SQL get count of all rows that have the same id 【发布时间】:2016-07-21 14:35:22 【问题描述】:我有一个名为story_comment 的表,其中包含(整数)列story_id 和comment_id。我想知道每个故事有多少个 cmets,但我不确定编写 sql 查询的最佳方法。
查询应返回一个包含story_id 和num_cmets 列的表(其中num_cmets 是story_comment 中的行数,其中story_id 与该结果行中的story_id 相同)。
期望的结果(示例):
story_id | num_cmets
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 进行此查询。
【问题讨论】:
【参考方案1】:使用GROUP BY
SELECT story_id, Count(story_id) as num_comments FROM story_comment
GROUP BY story_id
GROUP BY 语句与聚合结合使用 按一列或多列对结果集进行分组的函数。
【讨论】:
谢谢!正是我需要的。 很高兴能提供帮助【参考方案2】:要使 count()
等聚合函数应用于列的每个唯一值而不是完整表,请添加 group by
SELECT story_id, Count(*) as num_comments
FROM story_comment
group by story_id
【讨论】:
感谢您的快速回复,这正是我所需要的!以上是关于SQL 获取具有相同 id 的所有行的计数的主要内容,如果未能解决你的问题,请参考以下文章