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

SQL multiple UNNEST i enkelt udvalgsliste

Dette handler ikke som sådan om unød, men om PostgreSQL's meget mærkelige håndtering af flere sæt-returnerende funktioner i SELECT liste. Indstil returnerende funktioner i SELECT er ikke en del af ANSI SQL-standarden.

Du vil finde adfærd meget mere fornuftig med LATERAL forespørgsler, som bør foretrækkes frem for at bruge en sæt-retur-funktion i FROM så meget som muligt:

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

f.eks.

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)

Den eneste gang jeg stadig bruger flere sæt-returnerende funktioner i SELECT er når jeg vil parre værdier fra funktioner, der begge returnerer det samme antal rækker. Behovet for det vil forsvinde i 9.4, med multi-argument unnest og med understøttelse af WITH ORDINALITY .




  1. Ændring af en postgres containers serverport i Docker Compose

  2. MySQL GROUP BY flere kolonner fra forskellige tabeller

  3. Hvordan indstiller jeg et standard standardbillede (no_pic.gif) php?

  4. Hvordan sletter man flere rækker med 2 kolonner som sammensat primær nøgle i MySQL?