2012-08-14 3 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 

это ошибка:

ОШИБКИ: ошибка синтаксиса в или около "над" ЛИНИЯ 1: выберите row_number() по (ORDER BY cgcode_odc_mapping_id) как

+3

'Не работает' не говорит нам ничего, с чем мы можем помочь. Пожалуйста, вы можете дать сообщения об ошибках и/или любую другую соответствующую информацию. Кроме того, укажите версию PostgreSQL, которую вы используете. – MatBailie

+0

Вам нужна одна последовательность? – FabianoLothor

+0

Возможный дубликат [Как показать номера строк в запросе PostgreSQL?] (Http://stackoverflow.com/questions/3397121/how-to-show-row-numbers-in-postgresql-query) – vyegorov

ответ

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

Here's соответствующего раздел в Docs.

P.S. Это, по сути, полностью соответствует ответу в указанном вопросе.

+11

Вы также должны указать порядок в разделе 'OVER':' OVER (ORDER BY id) '. В противном случае заказ не гарантируется. – AlexM

+2

@pumbo Появляется row_number() возвращает «номер строки набора результатов» (т. Е. Всегда 1 2 3 4 ... если вы укажете 'over()'), однако, если у вас есть внешний запрос, повторно упорядочите результирующий порядок, конечно, ref : http://stackoverflow.com/a/3397149/32453 комментарии – rogerdpack

Смежные вопросы