sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL CTE-poster som parametrar för att fungera

Om funktionen returnerar en enskild post då:

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

kommer att funka. Men om funktionen är en SRF (Set-Returning-Function) måste du använda LATERAL, för att låta databasen veta att du vill mata resultaten av de tidigare tabellerna i JOIN-satsen till funktionerna senare i ANSLUTA SIG. Detta görs så här:

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

LATERAL kommer att få PostgreSQL att ta varje rad från CTE och köra "my_function" med värdena från den raden, vilket returnerar resultatet av den funktionen till den övergripande SELECT-satsen.




  1. Hierarkiska frågor

  2. Hur man konverterar en Microsoft Access-rapport till PDF (3 sätt)

  3. Använder MYsql 5.6 Memcache

  4. Räkna olika per räkenskapsår och visa alla datum i frågeresultatet