Chọn số hàng trong postgres


102

Cách chọn số hàng trong postgres.

Tôi đã thử điều này:

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

và gặp lỗi này:

LỖI: lỗi cú pháp tại hoặc gần "over"
LINE 1: select row_number () over (ORDER BY cgcode_odc_mapping_id) as

Tôi đã kiểm tra các trang này: Làm thế nào để hiển thị số hàng trong truy vấn PostgreSQL?


Đây là truy vấn của tôi:

 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 

đây là lỗi:

LỖI: lỗi cú pháp tại hoặc gần "over" LINE 1: select row_number () over (ORDER BY cgcode_odc_mapping_id) as


3
Not Workingkhông cho chúng tôi biết bất cứ điều gì mà chúng tôi có thể giúp đỡ. Vui lòng đưa ra thông báo lỗi và / hoặc bất kỳ thông tin liên quan nào khác. Ngoài ra, vui lòng chỉ định phiên bản PostgreSQL mà bạn đang sử dụng.
MatBailie


1
Theo phỏng đoán, nó không hoạt động vì bạn đang cố gắng sử dụng các hàm cửa sổ trên phiên bản cũ của PostgreSQL không hỗ trợ chúng.
Craig Ringer

2
Không có phiên bản PostgreSQL 1.8.4.
kgrittn

1
Xin vui lòng gửi sản lượng select version()- không có (và không bao giờ là) một phiên bản 1.8
a_horse_with_no_name

Câu trả lời:


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

Đây là phần liên quan trong tài liệu.

PS Điều này, trên thực tế, hoàn toàn khớp với câu trả lời trong câu hỏi được tham chiếu.


18
Bạn cũng nên xác định một trật tự trong OVERkhoản: OVER (ORDER BY id). Nếu không, đơn đặt hàng không được đảm bảo.
AlexM

3
@pumbo Xuất hiện row_number () trả về "số hàng của tập kết quả" (tức là luôn là 1 2 3 4 ... nếu bạn chỉ định over ()) tuy nhiên, nếu bạn có truy vấn bên ngoài, tất nhiên hãy sắp xếp lại thứ tự kết quả ref: stackoverflow.com/a / 3397149/32453 comments
rogerdpack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.