PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn SQL:Tìm nạp các hàng có thứ tự từ một bảng

Sử dụng truy vấn đệ quy (PostgreSQL phiên bản 8.4 trở lên):

Dữ liệu kiểm tra
/* test data:
CREATE TABLE foo (id, r_id, a_id, p_id) AS
    SELECT  1,9,9,0
    UNION ALL SELECT 2,9,105,108
    UNION ALL SELECT 3,9,102,9
    UNION ALL SELECT 4,9,106,105
    UNION ALL SELECT 5,9,108,102        
;
*/

-- the query you need:
WITH RECURSIVE sub(s_id, s_r_id, s_a_id, s_p_id, row) AS (
    SELECT id, r_id, a_id, p_id, 1 AS row FROM foo WHERE p_id = 0
UNION ALL
    SELECT id, r_id, a_id, p_id, (row + 1)  FROM foo JOIN sub ON s_a_id = p_id
)
SELECT * FROM sub ORDER BY row;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle sang PostgreSQL - Con trỏ và Biểu thức Bảng Thông dụng

  2. Oracle Cast và MULTISET có sẵn trong POSTGRES

  3. Tìm tất cả các trận đấu cho đội nhất định trong PostgreSQL

  4. Nhập .csv với cột dấu thời gian (dd.mm.yyyy hh.mm.ss) bằng psql \ copy

  5. Làm cách nào để lấy tên múi giờ hiện tại trong Postgres 9.3?