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

Postgres json_agg bao gồm tiêu đề cột - JSON không chính xác?

Đó là JSON chính xác theo nghĩa là nó hợp lệ, nhưng rõ ràng nó không phải những gì bạn muốn. Vì vậy, câu trả lời phụ thuộc vào định nghĩa của "đúng". Chúng tôi sẽ cho rằng những gì bạn muốn là "đúng".

Bạn đang yêu cầu nó tổng hợp u , là tập kết quả với cột team . Điều này có nghĩa là nó sẽ phải thêm thông tin này vào kết quả. Bạn chỉ nên yêu cầu tổng hợp u.team , đó là lĩnh vực bạn muốn. Sau đó, bạn sẽ nhận được kết quả như mong muốn.

WITH matches as
(
select 5 as id, '{"Id":1,"Teams":[{"Name":"TeamA","Players":[{"Name":"AAA"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"CCC"},{"Name":"DDD"}]}],"TeamRank":[1,2]}'::json as match
union all
select 6 as id, '{"Id":2,"Teams":[{"Name":"TeamA","Players":[{"Name":"CCC"},{"Name":"BBB"}]},{"Name":"TeamB","Players":[{"Name":"AAA"},{"Name":"DDD"}]}],"TeamRank":[1,2]}' as match
)
SELECT json_agg(u.team) FROM (
SELECT DISTINCT ON (t.team->>'Name') t.team
FROM   matches m, json_array_elements(m.match->'Teams') t(team)
ORDER  BY t.team->>'Name', m.id DESC) AS u;

Kết quả:




  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ập nhật hàng hiện có trong cơ sở dữ liệu từ pandas df

  2. Xác thực tính duy nhất trong cơ sở dữ liệu khi xác nhận có điều kiện

  3. Chơi 2.2 với Hibernate JPA và Postgres

  4. Tại sao các tác vụ Luồng không khí của tôi được xếp hàng đợi nhưng không chạy?

  5. điền vào cột với giá trị cuối cùng từ phân vùng trong postgresql