select t.owner_id, t.batch_number, t.create_by createBy, t.create_date createDate,rowId
from (
select ROW_NUMBER() over (partition by batch_number order by create_date desc) rowId, *
from ep_modification
where owner_id = '1652021111000007297'
) as t
where rowId = 1
把sql分解开了看
select ROW_NUMBER() over (partition by batch_number order by create_date desc) rowId
这个sql只是为了查询出来rowId。
按照batch_number分组,组内按照create_date倒序
利用row_number() over取得每组的rowId,rowId标识的就是组内排序的顺序
然后再从整个sql看,我每组只想取出来一条,所以加了rowId=1这个条件