SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Funkce json_each_text()
je sada vracení funkce, takže byste ji měli používat jako zdroj řádků. Výstup funkce je zde připojen bočně
do tabulky q
, což znamená, že pro každý řádek v tabulce každý (key, value)
pár z data
sloupec je připojen pouze k tomuto řádku, takže vztah mezi původním řádkem a řádky vytvořenými z json
objekt je udržován.
Tabulka q
může být také velmi komplikovaný dílčí dotaz (nebo VALUES
klauzule, jako ve vaší otázce). Ve funkci je příslušný sloupec použit z výsledku vyhodnocení tohoto dílčího dotazu, takže použijete pouze odkaz na alias dílčího dotazu a sloupec (alias) v dílčím dotazu.