sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL multipel UNNEST i en enda vallista

Det här handlar inte om olust som sådan, utan om PostgreSQL:s mycket konstiga hantering av flera set-returnerande funktioner i SELECT lista. Ställ in återkommande funktioner i SELECT är inte en del av ANSI SQL-standarden.

Du kommer att uppleva beteendet mycket sundare med LATERAL frågor, som bör föredras framför att använda en set-returnerande funktion i FROM så mycket som möjligt:

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

t.ex.

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 enda gången jag fortfarande använder flera set-retur-funktioner i SELECT är när jag vill para ihop värden från funktioner som båda returnerar samma antal rader. Behovet av det kommer att försvinna i 9.4, med unnest med flera argument och med stöd för WITH ORDINALITY .




  1. Omedelbar uppdatering till JCombobox i Java

  2. postgres till MS Access

  3. Ingen Entity Framework-leverantör hittades för 'MySql.Data.MySqlClient' ADO.NET-leverantör

  4. Problem med att skapa PostgreSQL-utlösare