Wybierz numer wiersza w postgres

102

Jak wybrać numer wiersza w postgres.

Próbowałem tego:

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

i otrzymałem ten błąd:

BŁĄD: błąd składni na poziomie „powyżej” lub w pobliżu
LINIA 1: wybierz row_number () na (ORDER BY cgcode_odc_mapping_id) jako

Sprawdziłem te strony: Jak wyświetlić numery wierszy w zapytaniu PostgreSQL?


To jest moje zapytanie:

 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 

to jest błąd:

BŁĄD: błąd składni na poziomie lub w pobliżu „ponad” LINIA 1: wybierz numer_wiersza () na (ORDER BY cgcode_odc_mapping_id) jako

Politycznie niezależny
źródło
3
Not Workingnie mówi nam niczego, w czym możemy pomóc. Czy możesz podać komunikaty o błędach i / lub inne istotne informacje. Określ również wersję PostgreSQL, której używasz.
MatBailie
1
Domyślnie to nie działa, ponieważ próbujesz użyć funkcji okna w starej wersji PostgreSQL, która ich nie obsługuje.
Craig Ringer
2
Nie ma wersji PostgreSQL 1.8.4.
kgrittn
1
Proszę opublikować wyjście select version()- nie ma (i nigdy nie było) wersji 1.8
a_horse_with_no_name

Odpowiedzi:

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

Oto odpowiednia sekcja w dokumentacji.

PS To w rzeczywistości w pełni zgadza się z odpowiedzią w przywołanym pytaniu.

vyegorov
źródło
18
Należy również określić kolejność, w OVERpunkcie: OVER (ORDER BY id). W przeciwnym razie zamówienie nie jest gwarantowane.
AlexM,
3
@pumbo Pojawia się row_number () zwraca „numer wiersza zestawu wyników” (tj. zawsze 1 2 3 4 ... jeśli określisz over ()), jednak jeśli masz zapytanie zewnętrzne, przeorganizuj kolejność wyników oczywiście ref: stackoverflow.com/a / 3397149/32453 komentarze
rogerdpack