SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Funkcja json_each_text()
jest funkcją zwracającą zestaw, więc powinieneś używać jej jako źródła wiersza. Dane wyjściowe funkcji są tutaj połączone bocznie
do tabeli q
, co oznacza, że dla każdego wiersza w tabeli każdy (key, value)
sparuj z data
kolumna jest połączona tylko z tym wierszem, więc relacja między oryginalnym wierszem a wierszami utworzonymi z json
obiekt jest utrzymywany.
Tabela q
może być również bardzo skomplikowanym podzapytaniem (lub VALUES
klauzula, jak w Twoim pytaniu). W funkcji używana jest odpowiednia kolumna z wyniku oceny tego podzapytania, więc używasz tylko odwołania do aliasu podzapytania i kolumny (aliasu) w podzapytaniu.