sql >> Databáze >  >> RDS >> PostgreSQL

Postgres Query JSON Pole, které něco obsahuje

Můžete použít json_array_elements funkci pro vygenerování SETOF json z pole:

SELECT name, json_array_elements(data) AS author
FROM publisher

Díky tomu jej můžete použít jako dílčí dotaz, takže můžete filtrovat, co chcete, např.:

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

Všimněte si, že pokud máte v této tabulce mnoho řádků, výkon takových dotazů (alespoň pro aktuální verzi 9.3) bude opravdu špatný. Doporučil bych vám normalizovat data do tabulek.




  1. MySQL - Zvýšit hodnotu sloupce nebo vložit data, pokud neexistují

  2. MySQL 'user_id' ve kterém je klauzule nejednoznačný problém

  3. Django ORM dotaz GROUP BY více sloupců kombinovaných MAX

  4. MySQL Multi-Dimensions? Dynamický pivot