postgres中查询排名的sql如下:
select * from (select ROW_NUMBER () OVER (ORDER BY 排序字段 desc nulls last) AS r,字段1,字段2 from 表名 where 字段1 = ‘条件1’) a where 字段2 = ‘条件2’;
可拆解为以下两部分便于理解:
1)按指定字段排序,排序后的结果加上行数
select ROW_NUMBER () OVER (ORDER BY 排序字段 desc nulls last) AS r,字段1,字段2 from 表名 where 字段1 = ‘条件1’
ps:nulls last是为了去除null字段对结果的影响
2)按条件查询排序后结果集中的数据,此处a为上一条查询结果集的别名
select * from a where 字段2 = ‘条件2’