2015-10-27 3 views
0

У меня есть база данных PostgreSQL 9.4.5. Там в таблице itemtable с колонкой JSONB называется data, который содержит наборы информации, как так (много материала раздел для краткости):SELECT/Querying "in" JSON-массивы

{ "items": [ 
    { "id": 158597 }, 
    { "id": 156300 }, 
    (...) 
] } 

Теперь я хочу, чтобы получить список всех id с в этих наборах предметов - неофициально можно сказать SELECT id FROM items FROM data FROM itemtable. Я только успел сделать это с помощью подзапроса, который явно неоптимальный:

SELECT idlist->>'id' FROM ( 
    SELECT json_array_elements(data::json->'items') AS idlist FROM itemtable 
) AS necessary_subquery_name 

Как я могу сделать это менее запутанным?

Обратите внимание, что мне нужно будет запустить это в SquirrelSQL, поэтому вам необходимо сделать снимок ::json.

ответ

0

О, ну, конечно, я, должно быть, пропустил сегодня кофе. Очевидно, что:

SELECT json_array_elements(data::json->'items')->>'id' FROM itemtable