PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQL множество UNNEST в един списък за избор

Тук не става дума за unnest като такова, а за много странното боравене на PostgreSQL с множество връщащи набор функции в SELECT списък. Функции за връщане на набор в SELECT не са част от стандарта ANSI SQL.

Ще откриете, че поведението е много по-разумно с LATERAL заявки, които трябва да се предпочитат пред използването на функция за връщане на набор в FROM колкото е възможно повече:

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

напр.

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)

Единственият път, когато все още използвам множество връщащи функции в SELECT е, когато искам да сдвоя стойности от функции, които връщат еднакъв брой редове. Нуждата от това ще изчезне в 9.4, с многоаргументен unnest и с поддръжка за 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. Как работи Ceiling() в PostgreSQL

  2. ECONNREFUSED за Postgres на nodeJS с докери

  3. точки на прекъсване в eclipse с помощта на postgresql

  4. PL/pgSQL и SQL в PostgreSQL на същото ниво ли са като SQL/PSM стандарт, вместо само като SQL стандарт?

  5. Експортирайте базата данни на Postgres в CSV файл