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

Làm thế nào để chuyển đổi các truy vấn phân cấp oracle sang postgresql?

Trong PostgreSQL, các truy vấn đệ quy được xây dựng bằng cách chỉ định đầu tiên tập hợp các hàng ( thuật ngữ không đệ quy , tức là những người ở cấp gốc hoặc cấp cuối cùng của hệ thống phân cấp). Các lần lặp tiếp theo (qua thuật ngữ đệ quy , truy vấn phụ sau UNION ALL ) sau đó thêm các hàng vào tập hợp kết quả từ các hàng còn lại trong tập hợp hàng đầu vào cho đến khi không có thêm hàng nào được thêm vào.

Trong trường hợp của bạn, truy vấn phụ ban đầu không được lọc, vì vậy bạn chỉ cần thêm tất cả các hàng trong lần chạy đầu tiên, không để lại gì cho các lần chạy tiếp theo.

Hãy thử những cách sau:

WITH RECURSIVE q AS (
  SELECT po.catalog_id,po.sub_tree_id
  FROM my_catalog po
  WHERE sub_tree_id = 0  -- this initially selects only "root" rows
UNION ALL
  SELECT po.catalog_id,po.sub_tree_id
  FROM my_catalog po
  JOIN q ON q.catalog_id=po.sub_tree_id
)
SELECT * FROM q;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển dữ liệu H2 sang PostgreSQL

  2. Không thể tìm thấy điểm nhập có tên 'InterlockedIncrement' trong DLL 'kernel32.dll' - [email protected] 64 bit

  3. Phạm vi cho một liên kết has_one tùy chọn với chính nó

  4. Tại sao số nguyên không dấu không có sẵn trong PostgreSQL?

  5. Giá trị không hợp lệ của lỗi Postgres cho tham số TimeZone:UTC