PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Postgres json_agg menyertakan tajuk kolom - JSON salah?

Ini adalah JSON yang benar dalam arti valid, tetapi jelas bukan itu yang Anda inginkan. Jadi jawabannya tergantung pada definisi "benar". Kami akan menganggap bahwa apa yang Anda inginkan adalah "benar".

Anda memintanya untuk menggabungkan u , yang merupakan hasil dengan kolom team . Ini berarti ia harus menambahkan informasi ini ke hasil. Anda hanya harus meminta agregasi u.team , yang merupakan bidang yang Anda inginkan. Maka Anda akan mendapatkan hasil yang Anda inginkan.

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;

Hasil:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengatur ulang SUM yang berjalan setelah mencapai ambang batas?

  2. Kolom tabel kenaikan otomatis

  3. Pengelompokan baris per jam menggunakan Django

  4. Menstandardisasi Keamanan PostgreSQL di Lingkungan Multi-Cloud

  5. Gambaran Umum Parameter Koneksi PostgreSQL 13 libpq sslpassword