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

Truy vấn SELECT đệ quy để trả về tỷ lệ có độ sâu tùy ý?

Đây có thể là những gì bạn đang tìm kiếm, theo mô tả của bạn:

WITH RECURSIVE cte AS (
   SELECT id, parent_rate_plan_id
   FROM   rate_plan  
   WHERE  id = ${user rate plan ID} 

   UNION ALL
   SELECT rp.id, rp.parent_rate_plan_id
   FROM   cte
   JOIN   rate_plan rp ON rp.id = cte.parent_rate_plan_id
   )
SELECT *
FROM   cte
JOIN   rate r ON r.rate_plan_id = cte.id
ODER   BY length(prefix) DESC
LIMIT  1;

Đệ quy dừng tự động ngay khi nút trên cùng (parent_rate_plan_id IS NULL ) đã đạt được.

Sẽ hiệu quả hơn nếu tham gia vào rate một lần sau khi bạn đã thu thập tất cả các kế hoạch.

Hướng dẫn sử dụng CTE (đệ quy).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chú thích ngủ đông - UniqueConstraint không phân biệt chữ hoa chữ thường

  2. Postgres GROUP BY trên trường bên trong jsonb

  3. Tên bảng và thuộc tính không phân biệt chữ hoa chữ thường trong Entity Framework 7

  4. Sự khác biệt giữa INSERT và COPY

  5. Chèn đối tượng lớn nhị phân (BLOB) trong PostgreSQL bằng cách sử dụng libpq từ máy tính từ xa