2010-03-05 66 views
0

我想查询来解决这个问题@查找组重复计数的用户

防爆:

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 ; 

它不工作。如何解决这个问题。

回答

0

使用group_concat将做到这一点:

SELECT ip, count(id) as count, group_concat(cast(id as char)) as ids 
FROM table 
GROUP BY ip 
+0

你为什么写'cast(id为char)'而不是'id'? – 2010-03-05 17:06:00

+0

@True Soft在phpMyAdmin下,我有一个blob字段,用于代替char字符,因此可以给出正确的结果 – Patrick 2010-03-05 17:47:50

0

要选择的组作为文本列,将有例如“1,2” 文本。如果是这样的话的ID,你必须沿着穿越的

所有结果的方式去
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

0

可以使用MySQL的函数GROUP_CONCAT

select ip, count(id) as count, GROUP_CONCAT(id) AS ids 
from table 
group by ip ;