2017-07-20 39 views
1

我叫match_info大致MySQL表看起來是這樣的 -獲取玩家的總得分只從最近的數場比賽中的MySql

match_no | player_id | score 

     1  | 1  | 50 
     1  | 2  | 12 
     2  | 1  | 10 
     2  | 2  | 14 
     3  | 1  | 11 
     3  | 2  | 30 

實際表包含比這更多的數據。無論如何,爲了舉例,現在讓我們說這是表格。我想要的是找出每個玩家對於選定數量的最近比賽的總得分。比如說現在我只需要計算兩次最近的比賽。所以只匹配不。 3和2應計數,我的輸出應該是 -

player_id | score 
    2  | 44 
    1  | 21 

我該怎麼做? 我嘗試以下 - 我遇到的是 -

這MariaDB的版本尚不支持 'LIMIT & IN/ALL/ANY/SOME子查詢'

SELECT player_id,SUM(score) as total_score 
FROM match_info 
where match_no IN 
(select match_no 
from match_info 
ORDER BY match_no DESC LIMIT 2) 
group by player_id 
order by total_score desc; 

但是錯誤

所以我不能在「IN」子查詢中使用限制。我可以使用什麼替代方法?

回答

1

請嘗試使用此查詢,它的工作方式與您的預期相同。

SELECT player_id, SUM(score) FROM match_info m1 INNER JOIN (SELECT DISTINCT match_no FROM match_info ORDER BY match_no DESC LIMIT 2) m2 ON m1.`match_no` = m2.match_no GROUP BY `player_id` ORDER BY `player_id` 
+0

非常感謝。它的作用就像一個魅力:D ...我前一段時間使用MAX和比較運算符提出了一個解決方案,但是您的解決方案看起來好多了。 – Tasfia

0

您可以嘗試「加入」與臨時表的數值進行比較,以便進行更多的查詢優化。

+0

嘗試過,但它並沒有完全解決。所以不知道該怎麼做。 – Tasfia