MySQL - 如何通过单个查询获取两列中的行数?

标签 mysql sql

我有以下数据:

| 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_iditem_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/

相关文章:

mysql - 为 select 中返回的空字段设置默认值

sql - CTE涉及两个联接的行为异常

mysql - 查询显示每天的金额,仅包含 View

sql - 编写自联接查询?

c++ - 如何同步写入线程和读取线程之间的数据库访问?

mysql - 如何使用查询备份mysql数据库

mysql - 计数大多数捐赠者 SQL

mySQL 触发器 - 我的语法有什么问题?

sql - MYSQL select语句条件

php - 替换枚举值