2015-01-20 67 views
0

我有一個表,它看起來像下面獲得前5個記錄每一個「組」的

pid  server    time  day 
89663 185.x.x.55:27015 463  2015-01-20 
89684 185.x.x.55:27015 29  2015-01-20 
61102 185.x.x.55:27015 309  2015-01-20 
5748 185.x.x.55:27015 684  2015-01-20 
317  79.x.x.40:27018  2410 2015-01-20 
54499 79.x.x.40:27018  12921 2015-01-20 
27176 80.x.x.12:27019  6711 2015-01-20 
81564 80.x.x.12:27019  1095 2015-01-20 
25628 185.x.x.55:27015 161  2015-01-20 

PID是玩家ID,時間以秒爲單位

我想打一個查詢,顯示瞭如何每臺服務器的前5名玩家花費很多時間。我寫了一個查詢這樣做:

SELECT `name`, `time` 
FROM (
    SELECT `pid`, SUM(`time`) AS `time` 
    FROM `stats_general` 
    WHERE `server` = '{$ip}' 
    AND `day` LIKE CONCAT(DATE_FORMAT(NOW(),'%Y-%m-'),'%') 
    GROUP BY `pid` 
    ORDER BY `time` DESC 
    LIMIT 0,5 
) AS g 
JOIN `stats_players` AS p ON g.pid = p.id 

不幸的是,這個查詢有一個壞的一面。它僅顯示了一臺服務器的前5名。我想查詢顯示每臺服務器的前5(我不想使用UNION,它會導致腳本執行很長時間。)

總結。我想要一個查詢,顯示前5(時間花在服務器上每個服務器的當前月)

回答

0

窩在另一您查詢獲取IP地址。

SELECT `server` FROM `stats_general` WHERE 1 GROUP BY `server`