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: