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

PostgreSQL:Vòng lặp cho đến khi một điều kiện là đúng

Suy nghĩ của bạn đối với SQL là sai. Đừng nghĩ về vòng lặp và điều kiện và biến; thay vào đó, hãy nghĩ về cách mô tả dữ liệu bạn muốn. Phần khó là bạn muốn truy vấn tham chiếu đến kết quả của chính nó và đó là điều CTE đệ quy dành cho:

Bạn đang tìm kiếm một cái gì đó như thế này:

with recursive path as (
    select id, parent from T where id = 4
    union all
    select t.id, t.parent from T t join path p on t.id = p.parent
)
select id, parent
from path

Điều đó sẽ cung cấp cho bạn điều này:

 id | parent 
----+--------
  4 |      2
  2 |      1
  1 |       

và sau đó bạn có thể kết hợp chúng lại với nhau theo một đường dẫn có thể liên kết với danh sách hơn (hoặc bất cứ điều gì phù hợp với ngôn ngữ khách hàng của bạn) bên ngoài cơ sở dữ liệu. Bạn không cần phải bao gồm parent tất nhiên, nhưng bao gồm cả nó sẽ giúp bạn sửa chữa các "con trỏ".




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết xuất truy vấn PostgreSQL dưới dạng tệp excel

  2. câu lệnh sql có đảm bảo tính nguyên tử trong postgres không

  3. Làm thế nào để ép kiểu mảng một cách rõ ràng trong sqlalchemy bằng cách sử dụng postgresql?

  4. Có PostgreSQL tương đương với SQL Server profiler không?

  5. Trả về bản ghi setof (bảng ảo) từ hàm