2017-07-20 22 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 

実際のテーブルにはこれよりも多くのデータが含まれています。とにかく例のために、これは今のところテーブルだと言いましょう。私が望むのは、選択した数の最近の試合で各プレイヤーの合計得点を見つけることです。たとえば、今は2つの最近のマッチだけを数える必要があるとします。したがって、一致するだけではありません。 3と2を数え、出力は -

player_id | score 
    2  | 44 
    1  | 21 

どのようにすればいいですか?私は 'LIMIT & IN/ALL/ANY/SOMEサブクエリ' MariaDBのこのバージョンはまだサポートされていないwas-

に遭遇しました

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

関連する問題