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

Tôi muốn trả về cột mới bằng cách sử dụng Đệ quy trong SQL?

Đây là một ví dụ chính tắc về VỚI RECURSIVE

Hãy thử điều này:

with recursive subordinates as
  (select 
      employeid, 
      e.managerid, 
      e.managerid as leader 
   from employes e 
   where e.managerid in(select * from leaders) -- non recursive term
   union 
   select 
      e.employeid, 
      e.managerid, 
      a.managerid as leader 
    from employes e 
          join subordinates a on a.employeid = e.managerid -- recursive term
) select * from subordinates

Như được mô tả trong tài liệu:

Đ CÓ HỒ SƠ luôn được soạn bởi

  1. Một thuật ngữ không đệ quy
  2. CÔNG ĐOÀN hoặc UNION ALL
  3. Một thuật ngữ đệ quy, thuật ngữ duy nhất có thể tham chiếu đến kết quả truy vấn

Tem kết hợp lại bắt đầu khi lần lặp trước không có đầu ra.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hướng dẫn bất hợp pháp:4 khi chạy Django

  2. Học thuyết JSON cột trong postgresql đang lưu trữ các đối tượng hoặc mảng của cùng một dữ liệu

  3. Sao lưu cơ sở dữ liệu Postgresql bằng Python

  4. Cách biết khi nào một bảng Postgres được nhóm và những chỉ mục nào được sử dụng

  5. Truy vấn SQL sử dụng IN với danh sách rất chậm