2012-08-14 53 views
62

如何在postgres中選擇行號。在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 

,並得到這個錯誤:

 
ERROR: syntax error at or near "over" 
LINE 1: select 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 

這是錯誤:

ERROR:語法錯誤處或附近 「上方」 LINE 1:選擇ROW_NUMBER()以上(ORDER BY cgcode_odc_mapping_id)作爲

+3

「不工作」並沒有告訴我們任何我們可以提供幫助的東西。請你能給出錯誤信息和/或任何其他相關信息。另外,請指定您正在使用的PostgreSQL的版本。 – MatBailie 2012-08-14 12:27:54

+0

你需要一個序列? – FabianoLothor 2012-08-14 12:28:17

+0

可能重複[如何顯示PostgreSQL查詢中的行號?](http://stackoverflow.com/questions/3397121/how-to-show-row-numbers-in-postgresql-query) – vyegorov 2012-08-14 12:31:10

回答

115
SELECT tab.*, 
    row_number() OVER() as rnum 
    FROM tab; 

Here's在相關的部分文檔。

P.S.事實上,這完全符合引用問題中的答案。

+11

您還應該在'OVER'子句中指定一個命令:'OVER(ORDER BY id)'。否則,訂單不能保證。 – AlexM 2016-06-14 04:30:00

+2

@pumbo出現row_number()返回「結果集的行號」(即總是1 2 3 4 ...如果指定'over()'),但是如果有一個外部查詢重新排列當然是ref的結果排序:http://stackoverflow.com/a/3397149/32453評論 – rogerdpack 2016-07-08 15:54:36