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

Lời giải thích có thể có về BẰNG CHỨNG SAU Truy vấn RECURSIVE

Đây được gọi là một biểu thức bảng chung và là một cách thể hiện một truy vấn đệ quy trong SQL:

t(n) xác định tên của CTE là t , với một cột duy nhất có tên n . Nó tương tự như bí danh cho một bảng dẫn xuất:

select ... 
from (
  ...
) as t(n);

Đệ quy bắt đầu với giá trị 1 (đó là các giá trị values (1) phần) và sau đó thêm đệ quy một vào nó cho đến khi đạt đến 99. Vì vậy, nó tạo ra các số từ 1 đến 99. Sau đó truy vấn cuối cùng sau đó tính tổng tất cả các số đó.

n là tên cột, không phải một "biến" và "gán" xảy ra theo cùng một cách với bất kỳ truy xuất dữ liệu nào.

WITH RECURSIVE t(n) AS (
    VALUES (1) --<< this is the recursion "root"
  UNION ALL
    SELECT n+1 FROM t WHERE n < 100 --<< this is the "recursive part"
)
SELECT sum(n) FROM t;

Nếu bạn "giải nén" đệ quy (thực chất là một phép lặp) thì bạn sẽ kết thúc với một cái gì đó như thế này:

select x.n + 1
from (
  select x.n + 1
  from (
    select x.n + 1
    from (
      select x.n + 1
      from (
         values (1)
      ) as x(n) 
    ) as x(n)
  ) as x(n)
) as x(n)

Thông tin chi tiết trong sách hướng dẫn:
https:// www .postgresql.org / docs / current / static / queries-with.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhà cung cấp dịch vụ đám mây Deep-Dive:PostgreSQL trên Microsoft Azure

  2. Cách tách tên thành họ và tên viết tắt

  3. Postgres CHÈN VÀO với lệnh CHỌN

  4. Mã hóa (<columnName>, 'Escape') tương đương PostgreSQL trong java là gì?

  5. pg_restore không thể thực hiện truy vấn:ERROR:tên miền không hợp lệ:en_US.UTF-8