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

PostgreSQL json_array_elements dalam klausa FROM - mengapa ini tidak bergabung dengan cartesian?

Sebenarnya ini kuno sintaks untuk CROSS JOIN. Setara formal:

SELECT
    t.json_column->>'x',
    nested->>'y'
FROM 
    my_table t
CROSS JOIN
    json_array_elements(t.json_column->'nested') nested;

Kueri tidak menghasilkan produk kartesius tetapi bertindak seperti gabungan dalam. Ini karena memiliki tersembunyi referensi antara dua bagian join, dalam hal ini alias t . Penggabungan semacam ini dikenal sebagai LATERAL JOIN . Untuk dokumentasi :

Jika salah satu bagian dari gabungan adalah fungsi, maka secara default diperlakukan sebagai lateral.




  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 menghasilkan Dump Postgresql dari wadah Docker?

  2. Mekanisme Replikasi Fisik di PostgreSQL

  3. Ikat param array ke kueri asli

  4. PSQLException:ERROR:relasi TABLE_NAME tidak ada

  5. Menggunakan .pgpass dari Apache libphp5.so