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

Изравняване на релация с масив за излъчване на един ред на запис в масив

Можем да поставим функцията за връщане на набор unnest() в SELECT списък както Raphaël предлага . Преди Postgres 10 това показваше проблеми с ъгловия регистър. Вижте:

От Postgres 9.3 можем също да използваме LATERAL присъединете се за това. Това е по-чистият, съвместим със стандартите начин за поставяне на връщащи набор функции в FROM списък, а не в SELECT списък:

SELECT name, value
FROM   tbl, unnest(values) value;  -- implicit CROSS JOIN LATERAL

Една фина разлика:това изпуска редове с празни / NULL values от резултата след unnest() връща няма ред , докато същото се преобразува в NULL стойност в FROM списък и въпреки това се върна. 100% еквивалентната заявка е:

SELECT t.name, v.value
FROM   tbl t
LEFT   JOIN unnest(t.values) v(value) ON true;

Вижте:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (Една таблица) получава редове, които не са без обединение

  2. PostgreSQL:Разширяване на честотната таблица

  3. PostgreSQL - повтарящи се редове от LIMIT OFFSET

  4. JSONB прави ли PostgreSQL масивите безполезни?

  5. PostgreSQL ОПИСАНИЕ ТАБЛИЦА Еквивалент