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()
är en återkommande funktion så du bör använda den som en radkälla. Utdata från funktionen är här förenad i sidled
till tabellen q
, vilket betyder att för varje rad i tabellen, varje (key, value)
par från data
kolumnen är endast kopplad till den raden så att förhållandet mellan den ursprungliga raden och raderna som bildas från json
objektet bibehålls.
Tabellen q
kan också vara en mycket komplicerad underfråga (eller en VALUES
klausul, som i din fråga). I funktionen används lämplig kolumn från resultatet av utvärderingen av den underfrågan, så du använder endast en referens till aliaset för underfrågan och (alias för) kolumnen i underfrågan.