出於某種原因,我無法獲得此查詢以返回我正在查找的結果。我解釋說,概括後的情況......使用INNER JOIN和MAX()返回與MAX相同的行
有兩個表,一個是球員,一個用於比賽。在每場比賽中,一名球員根據他們的位置得到一個等級(浮點/小數)。這個等級可能在一個位置上得到改善,但在其他位置可能會有所不同/更好。因此,我希望能夠看到MAX(評級)和pos最大值取自以及玩家詳細信息。
所以,我的想法是做到以下幾點:
SELECT *
FROM players
INNER JOIN(SELECT pid,
Max(rating) AS a,
pos
FROM matches
GROUP BY pid) b
ON b.pid = players.ypid
WHERE players.ytid = '2010591'
AND players.status = '1'
ORDER BY ypromdate ASC,
ydob ASC
這並返回所有玩家的細節和最高等級,但是如果玩家已在多個比賽(因此GROUP BY)打那麼第一條記錄返回pos。例如,如果player1獲得了5作爲後衛的評分,然後6作爲轉發,則該查詢將返回6後衛
如果需要更多信息,那麼我很樂意提供!
謝謝advance..feel就像我已經採取了查詢沿着錯誤的路線..
編輯幫助回答問題發佈:
軟件:MySQL的
阿帕奇/2.2.15(CentOS)
數據庫客戶端版本:libmysql - 5.1.69
樣本數據,減少以節省時間:
匹配表:ID,matchid,matchdate,位置,timeplayed,等級,PID
(149,77221704,「2013年8月12日15:00:00',100,90,1。5,143569504),(150,77221705, '2013年9月12日15:00:00',103,90,3,143569504)
Players表:PID,ytid,狀態 (143569504,2010591,1)
預期結果:
PID,ytid,狀態,POS,最大(額定) 143569504,2010591,1,103,3
當前結果:
PID,ytid,狀態,POS機,最大(額定) 143569504,2010591,1,100,3
一些示例數據和期望的輸出將會很有幫助,而且,您正在使用哪個數據庫(MySQL,SQL Server 2008等)? –
它的mysql,沒有別的將允許通過子查詢在組中選擇pos。而且存在着錯誤價值的主要原因。 – piotrm
請參閱上面的編輯,希望這可以幫助 – user2718534