sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres returnerer [null] i stedet for [] for array_agg af join-tabellen

En anden mulighed kan være array_remove(..., NULL) (introduceret i 9.3 ) hvis tags.tag er NOT NULL (ellers vil du måske beholde NULL værdier i arrayet, men i så fald kan du ikke skelne mellem en enkelt eksisterende NULL tag og en NULL tag på grund af 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

Hvis der ikke findes nogen tags, returneres et tomt array.



  1. Sådan gemmer du længde- og breddegrad i databasen. MySQL går ikke længere end -99.9999999

  2. Har problemer med at matche rækker i databasen ved hjælp af PDO

  3. Sådan opdateres Oracle Clob ved hjælp af JDBC

  4. Afslutningsresultatsæt, men ikke afsluttende PreparedStatement