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

Postgresql kiri luar bergabung pada json array

Untuk menjawab pertanyaan Anda:Ya, itu mungkin dan kueri Anda melakukan hal itu. Kami dapat membuktikannya dengan memasukkan baris ketiga di foo tabel:http://sqlfiddle.com/#!15/06dfe/2

Masalah Anda bukan pada LEFT JOIN ke json_array_elements tetapi dengan gabungan silang lateral implisit. Kueri Anda setara dengan:

SELECT *
FROM foo 
  CROSS JOIN LATERAL json_array_elements (foo.bars :: json) foo_bars 
  LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/5

Yang Anda inginkan adalah gabungan kiri lateral antara foo dan json_array_elements :

SELECT *
FROM foo LEFT JOIN LATERAL
    json_array_elements (foo.bars :: json) foo_bars ON true
LEFT OUTER JOIN bar ON (foo_bars ->> 'id') :: BIGINT = bar.ID;

http://sqlfiddle.com/#!15/06dfe/6




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aplikasi Spring Boot tidak dapat mengakses PostgreSQL menggunakan kredensial dari rahasia Kubernetes

  2. Menonaktifkan Pengumpulan Koneksi di Rails untuk menggunakan PgBouncer

  3. Bagaimana cara menghasilkan daftar Bulan di PostgreSQL?

  4. Nyalakan Pemicu SQL hanya ketika pengguna tertentu memperbarui baris

  5. Penguncian dan eksekusi bersamaan dari prosedur tersimpan