2017-03-18 60 views
0

我查詢 -最後輸入的值一行由MySQL

SELECT id, MAX(sl), details_sp FROM shareholderreceive GROUP BY id 

,並導致

id  MAX(sl)  details_sp 
1  76 
2  74 
3  64 
4  67 
5  69 
6  70 
10  72 

但我需要那些MAX(SL)凡details_sp列有最後輸入的值。

我的預期表 -

id  MAX(sl)  details_sp 
1  72    Jul'16 
2  74 
3  64 
4  62    Aug'16 
5  69 
6  70 
10  71    Aug'16 

這裏,數據類型details_sp是VARCHAR。 我在MySQL中需要什麼查詢?

回答

-1

我認爲你的意思是,當有一個details_sp填充時,你需要該行的sl值,並且當沒有details_sp時,你需要最大sl值?

如果是這樣,請不要使用MAX(),而是使用ORDER BY和GROUP BY。

SELECT id, sl, details_sp 
FROM shareholderreceive 
ORDER BY details_sp DESC, sl DESC 
GROUP BY id 

唯一的問題是,當它是一個varchar值時,你永遠無法按日期排序。這意味着你永遠無法獲得只有varchar作爲日期的最新條目。

因此,如果有辦法,將details_sp設置爲日期值(如果您沒有一天只是使用該月的第一天,那麼2017年6月2017 2017)以及使用DATE_FORMAT()在MySQL或date_format在PHP(或JAVA或其他)。

+0

按group by子句排序,另一個group by字段按彙總函數選擇。 –