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

时间:2018-08-29 07:22:34

标签: 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) 。我想做的是,将这些列汇总为“每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查询来实现此目的?请帮我。预先感谢。

2 个答案:

答案 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)

您可以使用countGROUP BY子句获得所需的结果

例如

SELECT user_id, count(item_id)
FROM table_name
GROUP BY user_id