选择具有多个匹配项的所有行

时间:2012-01-04 00:13:24

标签: mysql

好的,我有一个名为'test'和3列的MySQL表。

 ID | playername | lastloginip  
-----------------------------
 1  | user 1     |     1  
 2  | user 2     |     2  
 3  | user 3     |     3  
 4  | user 4     |     4  
 5  | user 5     |     5  
 6  | user 6     |     1  
 7  | user 7     |     1  
 8  | user 8     |     2  

现在,我想select ALL在表中多次找到lastloginip的行,然后给出这些行的计数。

在这种情况下,它应该返回数字5 用户1,2,6,7和8具有多次找到的lastloginip。

我已经尝试过使用

SELECT COUNT(*) 
FROM (
    SELECT * 
    FROM test 
    GROUP BY lastloginip 
    HAVING COUNT(*) > 1
)  t

但是这回复了2号而不是5号 我不确定如何正确设置此查询。我在互联网上的大多数调查结果只显示2行或给出数字2而不是5。

2 个答案:

答案 0 :(得分:5)

首先COUNT(),然后是SUM()

SELECT SUM(occurences) 
FROM 
(
   SELECT COUNT(*) AS occurences
   FROM test
   GROUP BY lastloginip
   HAVING COUNT(*)>1
) t

答案 1 :(得分:0)

尝试此查询。

SELECT SUM(loginip) 
FROM(
    SELECT 
    lastloginip, 
    COUNT(lastloginip) 
    as loginip 
    FROM test 
    GROUP BY lastloginip 
    HAVING COUNT(ID)>1
)t