在postgres中选择行号

Mav*_*ick 96 sql postgresql window-functions

如何在postgres中选择行号.

我试过这个:

select
    row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,
    cgcode_odc_mapping_id
  from access_odc.access_odc_mapping_tb
  order by cgcode_odc_mapping_id
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

ERROR: syntax error at or near "over"
LINE 1: select row_number() over (ORDER BY cgcode_odc_mapping_id)as

我检查过这些页面:如何在PostgreSQL查询中显示行号?


这是我的查询:

 select row_number() over (ORDER BY cgcode_odc_mapping_id)as rownum,cgcode_odc_mapping_id from access_odc.access_odc_mapping_tb order by cgcode_odc_mapping_id 
Run Code Online (Sandbox Code Playgroud)

这是错误:

错误:语法错误在"超过"LINE 1处或附近:选择row_number()over(ORDER BY cgcode_odc_mapping_id)as

vye*_*rov 165

SELECT tab.*,
    row_number() OVER () as rnum
  FROM tab;
Run Code Online (Sandbox Code Playgroud)

这是文档中的相关部分.

PS事实上,这完全符合引用问题的答案.

  • 您还应该在`OVER`子句中指定一个顺序:`OVER(ORDER BY id)`.否则订单无法保证. (17认同)
  • @pumbo出现row_number()返回"结果集的行号"(即总是1 2 3 4 ...如果你指定`over()`)但是如果你有一个外部查询重新安排结果排序当然ref: http://stackoverflow.com/a/3397149/32453评论 (3认同)
  • 就我而言,即使没有外部查询,它也以相反的顺序出现;显式的“order by”解决了这个问题。 (2认同)