SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Fungsi json_each_text()
adalah fungsi pengembalian yang ditetapkan sehingga Anda harus menggunakannya sebagai sumber baris. Output dari fungsi ada di sini digabungkan secara lateral
ke tabel q
, artinya untuk setiap baris dalam tabel, setiap (key, value)
pasangkan dari data
kolom bergabung hanya untuk baris itu sehingga hubungan antara baris asli dan baris terbentuk dari json
objek dipertahankan.
Tabel q
juga bisa menjadi sub-kueri yang sangat rumit (atau VALUES
klausa, seperti dalam pertanyaan Anda). Dalam fungsi tersebut, kolom yang sesuai digunakan dari hasil evaluasi sub-query tersebut, jadi Anda hanya menggunakan referensi ke alias dari sub-query dan kolom (alias) di sub-query.