我有以下数据:
| user_id | item_id |
|---------+---------|
| 3 | 2 |
| 3 | 11 |
| 4 | 1 |
| 4 | 2 |
| 4 | 55 |
| 4 | 3 |
| 5 | 9 |
其中 item_id
在同一个 user_id
中是不同的,但它可能重复(请参阅 user_id
= 3 和 user_id
= 4 都有 item_id
= 2)。我想要做的是将这些列聚合为“每个 user_id
的 item_id
行数”,如下所示:
| user_id | count(`item_id`) |
|---------+------------------|
| 3 | 2 |
| 4 | 4 |
| 5 | 1 |
目前,我天真地通过外部逻辑执行此操作,该逻辑对每个 user_id
执行 SELECT COUNT(item_id) WHERE user_id='${user_id}'
。正如您所预料的,当 user_id
增加时,情况会变得更糟。
如何编写单个 SQL 查询来实现此目的?请帮我。提前致谢。
最佳答案
尝试下面的计数聚合:当您将 group by 与 user_id 一起使用时,它将为您提供用户 ID 明智的计数
select user_id, count(item_id)
from tablename
group by user_id
关于MySQL - 如何通过单个查询获取两列中的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071708/