Đệ quy trong SQL

Các hệ quản trị cơ sở dữ liệu quan hệ dựa trên SQL chỉ phù hợp một phần cho các truy vấn phân cấp hoặc đệ quy. Các hệ thống khác như ArangoDB phù hợp hơn cho việc này (đã có một bài thuyết trình tuyệt vời về vấn đề này tại GOTO 2016 ). Tuy nhiên, cũng có thể tạo các truy vấn đệ quy trong SQL bằng cách sử dụng Common Table Expressions (CTT) , cho phép bạn, ví dụ, truy vấn các bảng cha/con truyền thống để tìm tất cả các tổ tiên và hậu duệ.


Trong PostgreSQL, nó trông như thế này, chẳng hạn:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Nếu bạn muốn lấy tất cả các con của một item_id nhất định, bạn sử dụng Biểu thức bảng chung:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Truy vấn cha mẹ cũng không có vấn đề gì:

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Trở lại