我在MySQL數據庫中有這個表。如何編寫MySQL查詢
-----------------tests---------------
----athleteId----eventId----score----
----129907-------1----------900------
----129907-------2----------940------
----129907-------3----------927------
----129907-------4----------856------
----328992-------1----------780------
----328992-------2----------890------
----328992-------3----------936------
----328992-------4----------864------
----492561-------1----------899------
----492561-------2----------960------
----492561-------3----------840------
----492561-------4----------920------
----487422-------5----------900------
----487422-------6----------940------
----487422-------7----------927------
----629876-------5----------780------
----629876-------6----------890------
----629876-------7----------940------
----138688-------5----------899------
----138688-------6----------950------
----138688-------7----------840------
-------------------------------------
我想要這個輸出。
---------------output----------------
----eventId----athleteId----score----
----1----------129907-------900------
----2----------492561-------960------
----3----------328992-------936------
----4----------//////-------///------
----5----------487422-------900------
----6----------138688-------950------
----7----------629876-------940------
我們部分解決了這個查詢的問題,但我想每個eventId只有一個不同的運動員id。目前,如果兩項賽事的最佳成績是由同一名運動員完成的,該運動員將在輸出中出現兩次。如果發生這種情況,我需要2ND最佳表現的運動員出現,而不是第一個。
縮短:一名運動員不能在結果中出現兩次。
SELECT athleteId, a.eventId, a.score
FROM tests AS a
JOIN (
-- This select finds the top score for each event
SELECT eventId, MAX(score) AS score
FROM tests
GROUP BY eventId
) AS b
-- Join on the top scores
ON a.eventId = b.eventId
AND a.score = b.score
你是什麼問題? – Ravi
看起來你有一個[標籤:最大的每組]問題。在這裏尋找一個解決方案:http://stackoverflow.com/a/7745635/570191 –
@AdrianCarneiro他正在尋找每個組別不是最高的第二高。 –