我的查询 -
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)where 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中我需要什么查询?
答案 0 :(得分:-1)
我认为你的意思是,如果填写了details_sp,你需要该行的sl值,当没有details_sp时你需要max 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-06-01为juli 2017)并使用DATE_FORMAT() PHP中的MySQL或date_format(或JAVA等)。