Выберите номер строки в postgres

102

Как выбрать номер строки в 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

и получил эту ошибку:

ОШИБКА: синтаксическая ошибка на "более" или близком к нему
СТРОКА 1: выберите row_number () вместо (ORDER BY cgcode_odc_mapping_id) как

Я проверил эти страницы: Как показать номера строк в запросе 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 

это ошибка:

ОШИБКА: синтаксическая ошибка на "более" или рядом с ней. СТРОКА 1: выберите row_number () вместо (ORDER BY cgcode_odc_mapping_id) как

Maverick
источник
3
Not Workingне сообщает нам ничего, чем мы можем помочь. Не могли бы вы предоставить сообщения об ошибках и / или другую соответствующую информацию. Также укажите версию PostgreSQL, которую вы используете.
MatBailie
1
Предположительно, это не работает, потому что вы пытаетесь использовать оконные функции в старой версии PostgreSQL, которая их не поддерживает.
Крейг Рингер,
2
PostgreSQL версии 1.8.4 отсутствует.
kgrittn
1
Пожалуйста, select version()
опубликуйте

Ответы:

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

Вот соответствующий раздел в документации.

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

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