最近项目中遇到了一个问题,要求要从A,B,C三个表里面取出来最新一条数据,其中A表是一个历史数据表,B表是设备表,C表同样是一个历史数据表,A表和C表功能不同。
这里先放上sql语句:
select * from (select * ,ROW_NUMBER() over(partition by col1 order by col2 desc , col3 desc) line from ( select a.col1, b.col2 from table_A as a left join table_B as b on a.col=b.col left join table_C as c on a.col = c.col )as tb) as t where line=1
其中row_number() OVER ( partition by col1 order by col2 desc, col3 desc) 表示根据col1 分组,在分组内部根据
col2 和 col3排序。