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

Postgres zwraca [null] zamiast [] dla array_agg tabeli łączenia

Inną opcją może być array_remove(..., NULL) (wprowadzony w wersji 9.3 ) jeśli tags.tag jest NOT NULL (w przeciwnym razie możesz chcieć zachować NULL wartości w tablicy, ale w takim przypadku nie można odróżnić jednego istniejącego NULL tag i NULL tag ze względu na LEFT JOIN ):

SELECT objects.*,
     array_remove(array_agg(tags.tag), NULL) AS tags,
FROM objects
LEFT JOIN taggings ON objects.id = taggings.object_id
LEFT JOIN tags ON tags.id = taggings.tag_id

Jeśli nie zostaną znalezione żadne tagi, zwracana jest pusta tablica.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd składni przy lub w pobliżu END z nazwą kolumny END

  2. Przeskocz lukę SQL nad określonym warunkiem i właściwym użyciem lead()

  3. Konfiguracja PostgreSQL w celu zapewnienia ciągłości działania

  4. Postgres konwertuje typ PATH na ARRAY

  5. Postgres:zaktualizuj sekwencję klawiszy podstawowych dla wszystkich tabel