我有它返回的信息是這樣一個複雜的SELECT查詢的最大值行:的MySQL找到現場
+------+-------+--------+
| a | b | c |
+------+-------+--------+
| 2482 | 3681 | 58248 |
| 2482 | 17727 | 139249 |
| 2482 | 23349 | 170839 |
| 3031 | 14877 | 122921 |
| 3031 | 20691 | 156457 |
| 3031 | 20932 | 157784 |
+------+-------+--------+
,我試圖找出如何與最大值僅返回的行b爲a的每個值。 在here該解決方案看起來前途無量,但我無法使它工作,因爲我的出發點不是一個表,但查詢(或視圖,我猜),我得到一個錯誤
「ERROR 1146( 42S02):表「databasename.s」不存在」
當我嘗試指的是子查詢中對上述問題的方式:
select s.* from (SELECT blah blah complex) s where s.b = (select max(s2.b) from s s2 where s2.a = s.a);
我敢肯定這是一個半問題的問題,但我已經抨擊了我的頭FF它幾個小時,根本不明白它不夠好,瀏覽我的出路吧...
編輯:我應該澄清什麼,我想作爲輸出:
+------+-------+--------+
| a | b | c |
+------+-------+--------+
| 2482 | 23349 | 170839 |
| 3031 | 20932 | 157784 |
+------+-------+--------+
MySQL版本是5.5.49(Ver 14.14 Distrib 5.5.49)
更新:@ Harshil的答案澄清說,我試圖在本質上是不可能的,所以我結束了其他問題的指導(由@Bill Karwin的指導)和重寫了我的原始查詢以執行另一個JOIN(針對子查詢),它執行max()。
@Neilski,這是一個很常見的問題,你會發現很多解決方案都帶有[tag:greatest-n-per-group]標籤。 –
比爾 - 謝謝,我會更仔細地諮詢這些答案,但乍一看他們似乎沒有人試圖分析一個查詢。用實際的表格似乎更容易... – Neilski