2012-01-04 86 views
3

好吧,我有一個名爲'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

回答

5

首先COUNT(),然後SUM()

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

謝謝,我想我現在擁有它。我將你的第一個「誤解」版本的查詢改爲了一些有用的東西。 SELECT SUM(occurrences)FROM( SELECT COUNT(ID)AS occurrences FROM test GROUP BY lastloginip HAVING COUNT(ID)> 1)t – Snowy007 2012-01-04 00:24:29

+0

我有一種感覺,我可能做了一些愚蠢的事情。希望其他人可以看看我的答案,並在需要時進行更正。 – marnir 2012-01-04 00:27:05

0

嘗試此查詢。

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