Postgres'te satır numarasını seçin


102

Postgres'te satır numarası nasıl seçilir.

Bunu denedim:

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

ve şu hatayı aldım:

HATA: "üzerinde" veya yakınında sözdizimi hatası
SATIR 1: satır_sayısını () (cgcode_odc_mapping_id İLE SİPARİŞ EDİN) olarak seçin

Şu sayfaları kontrol ettim: PostgreSQL sorgusunda satır numaraları nasıl gösterilir?


Bu benim sorgum:

 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 

bu hata:

HATA: "üzeri" SATIR 1'de veya yakınında sözdizimi hatası: satır_sayısı () üzerinden (cgcode_odc_mapping_id) olarak seçin


3
Not Workingbize yardımcı olabileceğimiz hiçbir şey söylemiyor. Lütfen hata mesajları ve / veya ilgili diğer bilgileri verebilir misiniz? Ayrıca, lütfen kullandığınız PostgreSQL sürümünü de belirtin.
MatBailie


1
Tahminime göre, pencere işlevlerini onları desteklemeyen eski bir PostgreSQL sürümünde kullanmaya çalıştığınız için çalışmıyor.
Craig Zil

2
PostgreSQL 1.8.4 sürümü yoktur.
kgrittn

1
Lütfen çıktısını gönderin select version()- 1.8 sürümü yok (ve hiç olmadı)
a_horse_with_no_name

Yanıtlar:


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

İşte dokümanlardaki ilgili bölüm.

Not: Aslında bu, atıfta bulunulan sorunun cevabıyla tamamen eşleşiyor.


18
Ayrıca bir siparişi belirtmelidir OVERmaddesi: OVER (ORDER BY id). Aksi takdirde sipariş garanti edilmez.
AlexM

3
@pumbo Görünür row_number () "sonuç kümesinin satır numarasını" döndürür (yani her zaman 1 2 3 4 ... belirtirseniz over ()) ancak bir dış sorgunuz varsa sonuç sırasını yeniden düzenleyin, tabii ref: stackoverflow.com/a / 3397149/32453 yorumlar
rogerdpack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.