2017-03-18 38 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字段按汇总函数选择。 –