我有以下数据:
| 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) 。我想做的是,将这些列汇总为“每item_id
的{{1}}行数},如下所示:
user_id
目前,我是通过外部逻辑来进行此操作,该逻辑在每个| user_id | count(`item_id`) |
|---------+------------------|
| 3 | 2 |
| 4 | 4 |
| 5 | 1 |
上执行SELECT COUNT(item_id) WHERE user_id='${user_id}'
。如您所料,增加user_id
会使情况变得更糟。
如何编写单个SQL查询来实现此目的?请帮我。预先感谢。
答案 0 :(得分:1)
尝试以下操作进行计数汇总:当您将group by与user_id一起使用时,它将为您提供用户ID明智的计数方式
<div class="size-swatches">
<div class="swatch size" data-value="s"></div>
<div class="swatch size" data-value="m"></div>
<div class="swatch size" data-value="l"></div>
<div class="swatch size" data-value="xl"></div>
</div>
答案 1 :(得分:0)
您可以使用count
和GROUP BY
子句获得所需的结果
例如
SELECT user_id, count(item_id)
FROM table_name
GROUP BY user_id