MySQL - Как я могу получить количество строк в двух столбцах по одному запросу? - PullRequest
0 голосов
/ 29 августа 2018

У меня есть следующие данные:

| 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 на user_id), которое будет выглядеть так:

| user_id | count(`item_id`) |
|---------+------------------|
|    3    |         2        |
|    4    |         4        |
|    5    |         1        |

В настоящее время я наивно делаю это с помощью внешней логики, которая выполняет SELECT COUNT(item_id) WHERE user_id='${user_id}' на каждом user_id с. Как вы и ожидали, это будет ухудшаться при увеличении user_id.

Как я могу написать один SQL-запрос для достижения этой цели? Пожалуйста, помогите мне. Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вы можете использовать предложения count и GROUP BY, чтобы получить желаемый результат

* 1005 например *

SELECT user_id, count(item_id)
FROM table_name
GROUP BY user_id
0 голосов
/ 29 августа 2018

Попробуйте ниже с агрегацией подсчета: когда вы используете group by с user_id, он подсчитывает количество идентификаторов пользователей

select user_id, count(item_id)
from tablename
group by user_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...