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

Postgres връща [null] вместо [] за array_agg на таблицата за свързване

Друга опция може да е array_remove(..., NULL) (въведено в 9.3 ), ако tags.tag е NOT NULL (в противен случай може да искате да запазите NULL стойности в масива, но в този случай не можете да направите разлика между един съществуващ NULL етикет и NULL поради 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

Ако не бъдат намерени етикети, се връща празен масив.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres грешка със Sinatra/Haml/DataMapper на Heroku

  2. Postgres - Транспониране на редове в колони

  3. PostgreSQL:имена на ограничения по подразбиране

  4. Мащабиране на PostgreSQL с помощта на пулери за връзки и балансьори на натоварване

  5. възстановяване на базата данни до определено състояние за тестване