Pilih nomor baris di postgres

102

Bagaimana memilih nomor baris di postgres.

Saya mencoba ini:

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

dan mendapatkan kesalahan ini:

EROR: kesalahan sintaks pada atau di dekat "over"
LINE 1: pilih row_number () di atas (ORDER BY cgcode_odc_mapping_id) sebagai

Saya telah memeriksa halaman-halaman ini: Bagaimana cara menampilkan nomor baris dalam kueri PostgreSQL?


Ini pertanyaan saya:

 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 

ini adalah kesalahannya:

EROR: kesalahan sintaks pada atau dekat "over" LINE 1: pilih row_number () over (ORDER BY cgcode_odc_mapping_id) sebagai

Maverick
sumber
3
Not Workingtidak memberi tahu kami apa pun yang dapat kami bantu. Tolong bisakah Anda memberikan pesan kesalahan dan / atau informasi relevan lainnya. Selain itu, harap tentukan versi PostgreSQL yang Anda gunakan.
MatBailie
1
Diperkirakan, ini tidak berfungsi karena Anda mencoba menggunakan fungsi jendela pada versi lama PostgreSQL yang tidak mendukungnya.
Craig Ringer
2
Tidak ada PostgreSQL versi 1.8.4.
kgrittn
1
Silakan posting output select version()- tidak ada (dan tidak pernah ada) versi 1.8
a_horse_with_no_name

Jawaban:

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

Inilah bagian yang relevan di dokumen.

PS Ini, pada kenyataannya, sepenuhnya cocok dengan jawaban dalam pertanyaan referensi.

vyegorov
sumber
18
Anda juga harus menentukan urutan OVERklausa: OVER (ORDER BY id). Jika tidak, pesanan tidak dijamin.
AlexM
3
@pumbo Muncul row_number () mengembalikan "nomor baris dari kumpulan hasil" (yaitu selalu 1 2 3 4 ... jika Anda menentukan over ()) namun jika Anda memiliki kueri luar mengatur ulang urutan hasil tentu saja ref: stackoverflow.com/a / 3397149/32453 komentar
rogerdpack