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

SQL více UNNEST v jednom výběrovém seznamu

Nejde o unnest jako takový, ale o velmi podivné zacházení PostgreSQL s více funkcemi vracejícími sadu v SELECT seznam. Nastavte funkce vracení v SELECT nejsou součástí standardu ANSI SQL.

S LATERAL najdete chování mnohem rozumnější dotazy, které by měly být upřednostňovány před použitím funkce vracející sadu v FROM co nejvíce:

select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;

např.

regress=> select a, b FROM unnest(array[1,2]) a, LATERAL unnest(array[1,2,3]) b;
 a | b 
---+---
 1 | 1
 1 | 2
 1 | 3
 2 | 1
 2 | 2
 2 | 3
(6 rows)

Jediný případ, kdy stále používám více funkcí vracejících sadu v SELECT je, když chci spárovat hodnoty z funkcí, které obě vracejí stejný počet řádků. Potřeba toho zmizí ve verzi 9.4 s více argumenty unnest a s podporou WITH ORDINALITY .




  1. Rozlišovat malá a velká písmena v mysql?

  2. Oracle odstraní data ze vzdálené tabulky SQL Server

  3. Vytvoření uživatele na MySQL

  4. Jedinečné omezení na více sloupců