SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Функцията json_each_text()
е функция, връщаща набор, така че трябва да я използвате като източник на ред. Резултатът от функцията е тук съединен странично
към таблицата q
, което означава, че за всеки ред в таблицата, всеки (key, value)
двойка от data
колона се присъединява само към този ред, така че връзката между оригиналния ред и редовете, образувани от json
обектът се поддържа.
Таблицата q
може да бъде и много сложна подзаявка (или VALUES
клауза, като във вашия въпрос). Във функцията се използва подходящата колона от резултата от оценяването на тази подзаявка, така че използвате само препратка към псевдонима на подзаявката и колоната (псевдоним на) в подзаявката.