Můžeme vložit funkci vracení sady unnest()
do SELECT seznam jak navrhuje Raphaël
. Před Postgresem 10 se takto projevovaly problémy s rohovými pouzdry. Viz:
Od Postgres 9.3 můžeme také použít LATERAL
připojit se k tomu. Je to čistší způsob, který vyhovuje standardům, jak vložit funkce vracející sadu do FROM seznamu, nikoli do SELECT seznam:
SELECT name, value
FROM tbl, unnest(values) value; -- implicit CROSS JOIN LATERAL
Jeden nepatrný rozdíl:tím se zbaví řádků s prázdnými / NULL values z výsledku od unnest() vrátí žádný řádek , zatímco stejný je převeden na hodnotu NULL v FROM seznam a stejně se vrátil. 100% ekvivalentní dotaz je:
SELECT t.name, v.value
FROM tbl t
LEFT JOIN unnest(t.values) v(value) ON true;
Viz: