SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Hàm json_each_text()
là một hàm trả về tập hợp, vì vậy bạn nên sử dụng nó như một nguồn hàng. Đầu ra của hàm ở đây được tham gia theo chiều ngang
vào bảng q
, nghĩa là đối với mỗi hàng trong bảng, mỗi (key, value)
ghép nối từ data
cột chỉ được nối với hàng đó nên mối quan hệ giữa hàng gốc và các hàng được hình thành từ json
đối tượng được duy trì.
Bảng q
cũng có thể là một truy vấn phụ rất phức tạp (hoặc VALUES
, như trong câu hỏi của bạn). Trong hàm, cột thích hợp được sử dụng từ kết quả đánh giá truy vấn phụ đó, vì vậy bạn chỉ sử dụng tham chiếu đến bí danh của truy vấn phụ và cột (bí danh của) trong truy vấn phụ.