PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Postgres trả về [null] thay vì [] cho array_agg của bảng tham gia

Một tùy chọn khác có thể là array_remove(..., NULL) ( được giới thiệu trong 9.3 ) if tags.tagNOT NULL (nếu không, bạn có thể muốn giữ NULL các giá trị trong mảng, nhưng trong trường hợp đó, bạn không thể phân biệt giữa một NULL hiện có duy nhất và một thẻ NULL do thẻ 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

Nếu không tìm thấy thẻ nào, một mảng trống sẽ được trả về.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các giới hạn trên lược đồ PostgreSQL thay đổi bên trong các giao dịch?

  2. Câu lệnh SQL đệ quy (Postgresql) - phiên bản đơn giản hóa

  3. Làm cách nào để có được một kết xuất cơ sở dữ liệu postgres văn bản thuần túy trên heroku?

  4. Lặp lại các bản ghi PostgreSQL. Làm thế nào để tham chiếu dữ liệu từ hàng tiếp theo?

  5. Chuyển đổi tên tháng thành số tháng trong PostgreSQL