sql在字段重复时 对某个字段根据最新时间取数

问题遇到的现象和发生背景

问题是这样的,proxy_code_4相同,second_level 相同,那么取create-time大的warn_code,怎么把数据筛出来

img

select a.proxy_code_4, a.second_level,max(a.warn_code) from table a where (a.proxy_code_4,a.second_level,a.create-time) in
(select table.proxy_code_4, table.second_level, max(table.create-time)
from table
group by table.proxy_code_4, table.second_level) group by a.proxy_code_4, a.second_level

1、可以写sql将数据排序
比如 order by proxy_code_4、second_level 、create-time desc
注意select 处将 自增序号查出来 ,比如字段为rownum ,类似于
set @rownum = 0;
SELECT @rownum := @rownum +1 AS rownum ,s.account FROM s_user s ORDER BY s.reg_time DESC ;

此时的结果比如是
rownum proxy_code_4 second_level create-time
1 A B D
2 A B C
3 B C D
2、将1查询的结果作为一个结果集,group by 取最大的rownum ,
rownnum为1的取出来,rownum 为2的数据不要
3、把1和2的结果通过rownum进行join即可得到你想要的的数据