SELECT q.id, d.key, d.value
FROM q
JOIN json_each_text(q.data) d ON true
ORDER BY 1, 2;
Funktionen json_each_text() er en sæt returnerende funktion, så du bør bruge den som en rækkekilde. Outputtet af funktionen er her sammenføjet lateralt
til tabellen q , hvilket betyder, at for hver række i tabellen, hver (key, value) par fra data kolonne er kun forbundet med denne række, så forholdet mellem den oprindelige række og rækkerne dannet fra json objekt vedligeholdes.
Tabellen q kan også være en meget kompliceret underforespørgsel (eller en VALUES klausul, som i dit spørgsmål). I funktionen bruges den relevante kolonne fra resultatet af evalueringen af den underforespørgsel, så du bruger kun en reference til underforespørgslens alias og (alias for) kolonnen i underforespørgslen.