Найти различное количество групп по пользователю - PullRequest
0 голосов
/ 05 марта 2010

Я хочу решить эту проблему в запросе @

Например:

id  ip 
1   1.2.3.3
2   1.2.3.3
3   1.23.42.2
4   4.4.2.1 

Я ищу

ip        count    ids 
1.2.3.3   2       1,2 
1.23.42.2 1       3 
4.4.2.1   1       4 

Я пытался с запросом -

select count(id) ,ip , id from table group by ip ; 

это не работает. как решить это.

Ответы [ 3 ]

0 голосов
/ 05 марта 2010

Вы можете использовать функцию MySQL GROUP_CONCAT :

select ip, count(id) as count, GROUP_CONCAT(id) AS ids
from table 
group by ip ; 
0 голосов
/ 05 марта 2010

Использование group_concat сделает это:

SELECT ip, count(id) as count, group_concat(cast(id as char)) as ids
FROM table 
GROUP BY ip 
0 голосов
/ 05 марта 2010

Вы хотите выбрать идентификаторы для группы в виде текстового столбца, в котором будет текст, например «1,2». Если это так, вам придется пройти по пути обхода всех результатов

select ip, count(id) from table group by id

с помощью курсора, который запоминает @ip и @count, затем для каждой строки извлекает все идентификаторы для этой группы

select id from table where ip = @ip

, просматривая все результаты другим курсором и сохраняя результаты в переменной nvarchar @ids, котораябудет выглядеть как '1,2'

, тогда в главном цикле курсора вы будете выводить каждую строку как @ip, @count, @ ids

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...