Kortare, snabbare och mer elegant med en LATERAL
gå med:
SELECT DISTINCT ON (t.team->>'Name') t.team
FROM matches m, json_array_elements(m.match->'Teams') t(team);
ORDER BY t.team->>'Name', m.id DESC; -- to get the "last"
Om du bara vill ha distinkta lag, ORDER BY
kan gå. Relaterat:
- Fråga efter element av array i JSON-kolumnen
- Fråga efter arrayelement i JSON-typ
JSON och jämlikhet
Det finns ingen likhetsoperator för json
datatyp i Postgres, men det finns en för jsonb
(Postgres 9.4+):
- Hur frågar jag en json-kolumn för tomma objekt?