PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres Query JSON Array, das etwas enthält

Sie können die json_array_elements verwenden Funktion zum Generieren eines SETOF json aus einem Array:

SELECT name, json_array_elements(data) AS author
FROM publisher

Damit können Sie es als Unterabfrage verwenden, sodass Sie filtern können, was Sie möchten, z. B.:

SELECT DISTINCT author->>'author'
FROM (
    SELECT name, json_array_elements(data) AS author
    FROM publisher
) t
WHERE t.author->>'type' = 'Novel';

Beachten Sie nur, dass die Leistung solcher Abfragen (zumindest für die aktuelle Version 9.3) wirklich schlecht ist, wenn Sie viele Zeilen in dieser Tabelle haben. Ich würde Ihnen empfehlen, die Daten in Tabellen zu normalisieren.