2015-12-09 39 views
0

我想下面Mysql的取整行,其中值是最大

Table : teams_members 

Id   Team_id   User_id 

1   103    65524 
14   103    65529 
16   103    65530 
17   103    65526 
19   103    65528 

Table : users 
Id   username 

65524  Kaiprioska 
65526  Darkstarling 
65528  Metazoans98 
65529  Darth Laser 
65530  TheBourbonKid 

Table : users_playeraccounts 
Id  user_id  summoner_name   rank_solo 

7  65524  kaiprioska   19 
8  65524  swaggapandaa   14 
9  65524  Yolonese Prophet  12 
10  65529  Darth Laser   15 
11  65530  TheBourbonkid   18 
12  65528  Metazoans98   9 
13  65530  TheBourbonKid   12 

什麼結果必須是:

user_id summoner_name rank_solo 

65524 kaiprioska  19 
65529 Darth laser  15 
65530 TheBourbonkid 18 
65528 metazoans98  9 
655529 darth laser  15 

所以每次teammember我需要的users_playeraccounts條目,其中rank_solo是最大爲那個user_id。我可以得到完整的列表,所以每個成員的每個playeraccount,但不是最大的條目。

任何援助將不勝感激。

回答

0
select user_id, summoner_name, max(rank_solo) as rank_solo 
    from users_playeraccounts 
    group by user_id 
+0

的'summoner_name'選擇用於其結果將是不確定的。 – Uueerdo

0

試試這個

SELECT USER_ID, SUMMONER_NAME, MAX(RANK_SOLO) FROM users_playeraccounts GROUP BY USER_ID 
+0

爲結果選擇的'summoner_name'將不確定。 – Uueerdo

0

你需要查詢表兩次;一次獲得最高等級,另一個獲取他們的記錄。 (順便說一句,如果用戶在最高等級具有兩個,都與在結果。)

SELECT q.user_id, q.summoner_name, q.rank_solo 
FROM (
    SELECT user_id, MAX(rank_solo) AS rank_solo 
    FROM users_playeraccounts 
    GROUP BY user_id 
) As maxQ 
INNER JOIN users_playeraccounts AS q USING (user_id, rank_solo) 
GROUP BY q.user_id -- If you only want one per user. 
; 
+0

你先生是個天才。非常感謝。如果有多個相同的排名,是否有辦法將結果限制爲1條目? – battlenub

+0

@battlenub查看'GROUP BY'我剛添加在查詢結束。 – Uueerdo

+0

@battlenub如果你想要所有的名字,但每個用戶只有一行,你可以把'q.summoner_name'改成'GROUP_CONCAT(q.summoner_name)AS summoner_names'。 – Uueerdo

0

SELECT u.id,u.username,solo_rank FROM( SELECT [USER_ID]用戶ID,MAX( rank_solo)solo_rank FROM users_playeraccounts GROUP BY [USER_ID] )BestSoloRanking JOIN用戶U ON BestSoloRanking.userID = u.id