標題可能有點令人困惑,但我想沒有簡單的方法可以說出來。這是問題:根據原始表格行輸入從加入的MySQL列中獲取MAX值
我有兩個表。一個列出足球比賽,其中約3000個,每個都有獨立的ID。第二張桌子在一張桌子裏放置賠率,在每一行中都有一個ID,以及三個欄目主頁,抽獎和離開賠率。
當我想爲特定匹配(ID添加到WHERE子句中)提取最大首頁賠率時,沒有任何問題。大約30行被檢查並返回最大值。
當我想檢查每個單獨比賽的所有最大值時出現問題,因爲所有首頁賠率都在同一列中。所以,對於所有匹配,整個列的最大值將被返回,而不是與匹配相關的最大值。
固定裝置表包含有關比賽的信息。這很簡單,3列,再加上三個應該從另一個表中提取的最高值:
匹配ID,事件名稱,開始日期,TopHomeOdds,TopDrawOdds,TopAwayOdds。
odds
表對於相同的匹配具有多行。
match ID, event name, bookmaker, homeOdds, drawOdds, awayOdds
123456 TeamA-TeamB Bookmaker1 1.60 3.00 4.05
123456 TeamA-TeamB Bookmaker2 1.55 3.05 4.00
123456 TeamA-TeamB Bookmaker3 1.65 2.95 4.10
我要提取的最大值(在上述例子中這將是1.65,3.05,4.10),所以我可以插入這些值到所述第一表中。插入不是問題,獲取最大值是。我想應該使用一些聰明的JOIN查詢,這就是你們中的一個人進來的地方......先謝謝了。
這是不準確的所有homeOdds,drawOdds和
awayOdds, so the output is something like:
123456 match1 startdate 29.00 4.00 13.50
234567 match2 startdate 29.00 4.00 13.50
345678 match3 startdate 29.00 4.00 13.50
,因爲最大價值還沒有被涉及到比賽本身所有的結果都相同,則返回最大值的代碼,但一般的最大值整列的數據被返回。
SELECT fixtures.matchid AS eventid, fixtures.matchdate AS eventstartdate,
fixtures.eventname AS eventname, MAX(odds.homeOdds) AS TopHomeOdds,
MAX(odds.drawOdds) AS TopDrawOdds, MAX(odds.awayOdds) AS TopAwayOdds
FROM
fixtures
INNER JOIN odds ON odds.matchid=fixtures.matchid
最後一部分,一般的INNER JOIN,就是問題所在。我希望它對於匹配ID是有選擇性的,我希望它只能返回具有與第一個表中的匹配相關的行ID的列的最大值。
丹,檢查這裏的一些很好的答案:http://stackoverflow.com/questions755918。特別是來自bobince的答案。 – Perception
謝謝,看來GROUP BY是答案。 –