sql >> Databáze >  >> RDS >> PostgreSQL

Záznamy PostgreSQL CTE jako parametry funkce

Pokud funkce vrátí jeden záznam, pak:

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

bude pracovat. Pokud je však funkcí SRF (Set-Returning-Function), musíte použít LATERAL, abyste databázi věděli, že chcete vložit výsledky předchozích tabulek v příkazu JOIN do funkcí později v PŘIPOJIT. To se provádí takto:

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

LATERAL způsobí, že PostgreSQL vezme každý řádek z CTE a spustí "my_function" s hodnotami z tohoto řádku, čímž vrátí výsledky této funkce do celkového příkazu SELECT.




  1. Odstraňte obrovské množství dat z velké tabulky

  2. jak extrahovat pole hodnoty xml pomocí serveru SQL (funkce extractvalue v mysql)

  3. Největší nenulový sloupec

  4. Tabulka popisu SQLite