sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL CTE optager som parametre for at fungere

Hvis funktionen returnerer en enkelt post, så:

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

vil arbejde. Men hvis funktionen er en SRF (Set-Returning-Function), så skal du bruge LATERAL for at lade databasen vide, at du vil føre resultaterne af de foregående tabeller i JOIN-sætningen til funktionerne senere i TILSLUTTE. Dette opnås sådan:

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

LATERAL vil få PostgreSQL til at tage hver række fra CTE og køre "my_function" med værdierne fra den række, hvilket returnerer resultaterne af den funktion til den overordnede SELECT-sætning.




  1. Kald til udefineret funktion pg_connect() - Wamp

  2. host localhost har ikke tilladelse til at oprette forbindelse til denne MySQL-server

  3. MySQL:Kolonne automatisk aktuelle tidspunkt for indsættelse

  4. Fejl under adgang til EntityManager - openjpa - WAS liberty-profil