【问题标题】:Select Row number in postgres在 postgres 中选择行号
【发布时间】:2012-08-10 17:47:37
【问题描述】:

如何在 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

得到了这个错误:

错误:“over”处或附近的语法错误 第 1 行:选择 row_number() over (ORDER BY cgcode_odc_mapping_id) as

我已经检查了这些页面:How to show row numbers in PostgreSQL query?


这是我的查询:

 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 

这是错误:

错误:在“over”第 1 行或附近出现语法错误:选择 row_number() over (ORDER BY cgcode_odc_mapping_id)as

【问题讨论】:

  • Not Working 没有告诉我们任何可以提供帮助的信息。请您提供错误消息和/或任何其他相关信息。另外,请指定您使用的 PostgreSQL 版本。
  • 猜想,它不起作用,因为您试图在不支持它们的旧版本 PostgreSQL 上使用窗口函数。
  • 没有 PostgreSQL 版本 1.8.4。
  • 请发布select version() 的输出 - 没有(也从来没有)1.8 版

标签: sql postgresql window-functions


【解决方案1】:
SELECT tab.*,
    row_number() OVER () as rnum
  FROM tab;

Here's 文档中的相关部分。

附:事实上,这完全符合引用问题中的答案。

【讨论】:

  • 您还应该在OVER 子句中指定一个订单:OVER (ORDER BY id)。否则无法保证订单。
  • @pumbo Appears row_number() 返回“结果集的行号”(即始终为 1 2 3 4 ...如果您指定 over ())但是如果您有外部查询重新排列结果排序当然参考:stackoverflow.com/a/3397149/32453 cmets
  • 在我的例子中,它以相反的顺序出现,即使没有外部查询;显式的order by 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多