PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL CTE записи като параметри за функциониране

Ако функцията върне един запис, тогава:

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

ще работи. Ако обаче функцията е SRF (Set-Returning-Function), тогава трябва да използвате LATERAL, за да уведомите базата данни, че искате да подадете резултатите от предишните таблици в оператора JOIN към функциите по-късно в ПРИСЪЕДИНЯВАНЕ. Това се постига по следния начин:

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

LATERAL ще накара PostgreSQL да вземе всеки ред от CTE и да изпълни "my_function" със стойностите от този ред, връщайки резултатите от тази функция към общия оператор SELECT.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Комбинирани 2 колони в една колона SQL

  2. Замяна на всички таблици на база данни с изключение на една с данни от друга база данни

  3. Как да направя заявка за всички редове в радиус от 5 мили от моите координати?

  4. Не са открити промени, когато изпълня Python manage.py makemigrations и мигрирам

  5. Как CONCAT_WS() работи в PostgreSQL