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

PostgreSQL CTE ghi lại dưới dạng các tham số để hoạt động

Nếu hàm trả về một bản ghi thì:

WITH cte AS (SELECT 1 a, 2 b)
SELECT my_function(a, b) FROM cte;

sẽ làm việc. Tuy nhiên, nếu hàm là SRF (Set-Return-Function), thì bạn cần sử dụng LATERAL, để cho cơ sở dữ liệu biết rằng bạn muốn cung cấp kết quả của các bảng trước trong câu lệnh JOIN cho các hàm sau này trong THAM GIA. Điều này được thực hiện như vậy:

WITH cte AS (SELECT 1 a, 2 b)
SELECT * FROM cte, LATERAL my_function(a, b);

LATERAL sẽ khiến PostgreSQL lấy từng hàng từ CTE và chạy "my_ functions" với các giá trị từ hàng đó, trả về kết quả của hàm đó cho câu lệnh SELECT tổng thể.




  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àm sum XPath hay fn:sum có được triển khai trong PostgreSQL XPath không?

  2. sử dụng bản sao trong postgresql?

  3. Có thể tắt xử lý báo giá trong lệnh Postgres COPY với định dạng CSV không?

  4. Vấn đề đồng thời với psycopg2, Redshift và unittest

  5. Cập nhật các công cụ kiểm tra PostgreSQL với kho lưu trữ điểm chuẩn