PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQL wielokrotne UNNEST na pojedynczej liście wyboru

Nie chodzi tu o niezagnieżdżenie jako takie, ale o bardzo dziwną obsługę wielu funkcji zwracających zestawy w SELECT PostgreSQL lista. Zestaw funkcji zwracania w SELECT nie są częścią standardu ANSI SQL.

Przekonasz się, że zachowanie jest znacznie rozsądniejsze dzięki LATERAL zapytania, które powinny być preferowane w stosunku do funkcji zwracających zestaw w FROM jak najwięcej:

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

np.

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)

Jedyny raz, kiedy nadal używam wielu funkcji zwracania zestawów w SELECT jest wtedy, gdy chcę sparować wartości z funkcji, które zwracają tę samą liczbę wierszy. Potrzeba tego zniknie w wersji 9.4, z wieloargumentowym unnest i z obsługą WITH ORDINALITY .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić kolumnę PG na NULLABLE TRUE?

  2. Unikalne indeksy PostgreSQL i wielkość liter

  3. Zmaterializowana ścieżka Postgres - Jakie są korzyści z używania ltree?

  4. PostgreSQL DATEADD() Odpowiednik

  5. Jak załadować dane do pand z dużej bazy danych?