select * from (
select *, row_number() over (partition by `身份证号` order by `填表时间` desc) as group_idx
from `table_name` ) a
where a.group_idx=1;
上述代码即为:根据身份证号分区 填表时间排序 取时间最近的一条数据。
如需保留最旧数据 将desc替换为asc如下:
select * from (
select *, row_number() over (partition by `身份证号` order by `填表时间` asc) as group_idx
from `table_name` ) a
where a.group_idx=1;