2010-03-05 93 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 ;