我正在面對MySQL查詢中的一個問題,它是「具有最大值的行的標識」的變體。對於我的所有試驗,我要麼得到錯誤或者結果不正確。行中的MySQL最大值
這裏是表結構
Row_id
Group_id
Grp_col1
Grp_col2
Field_for_aggregate_func
Another_field_for_row
與特定GROUP_ID所有行,我想通過域組Grp_col1,Grp_col2然後得到Field_for_aggregate_func的最大值,然後相應Another_field_for_row的價值。
查詢我試圖像下面
SELECT c.*
FROM mytable as c left outer join mytable as c1
on (
c.group_id=c1.group_id and
c.Grp_col1 = c1.Grp_col1 and
c.Grp_col2 = c1.Grp_col2 and
c.Field_for_aggregate_func > c1.Field_for_aggregate_func
)
where c.group_id=2
在這個問題的替代解決方案我想,因爲這一個高性能的解決方案將用於大型數據集。
編輯:這裏是行的樣本集和預期的答案
Group_ID Grp_col1 Grp_col2 Field_for_aggregate_func Another_field_for_row
2 -- N 12/31/2015 35
2 -- N 1/31/2016 15 select 15 from group for max value 1/31/2016
2 -- Y 12/31/2015 5
2 -- Y 1/1/2016 15
2 -- Y 1/2/2016 25
2 -- Y 1/3/2016 30 select 30 from group for max value 1/3/2016
您能想象如果您提供樣本數據和預期結果,獲得解決方案的速度會更快嗎?你知道什麼樣的數據,你知道結果應該是什麼樣的--->我們不 –
這是一個次要問題,除非我有超過1個解決方案。現在我沒有得到任何查詢工作。一旦我有多個解決方案,我將使用快速解決方案,除非沒有其他選擇,否則任何延遲都必須容忍。理想情況下,我想用查詢解決它,當沒有任何工作時,我會將整個結果集放到我的PHP程序中,然後在那裏解決。 – bvnbhati
所以在輸出中,你想要15和30? – Utsav