Re: [SQL] Better way to sort a JSONB array?
От | Michael Moore |
---|---|
Тема | Re: [SQL] Better way to sort a JSONB array? |
Дата | |
Msg-id | CACpWLjOazZxLNerPJvmi8BBzmuqbhFhv+Xu0jD3Qj-YL2=qf-A@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [SQL] Better way to sort a JSONB array? (Steve Midgley <science@misuse.org>) |
Ответы |
Re: [SQL] Better way to sort a JSONB array?
|
Список | pgsql-sql |
json_table2 is declared as a variable in pgsql. It is not a jsonb table column. It is loaded from a statement like:
execute 'select jsonb_agg(row_to_json(zzz)) from (...extremely complex query goes here) zzz' into json_table2;
execute 'select jsonb_agg(row_to_json(zzz)) from (...extremely complex query goes here) zzz' into json_table2;
Later, additional rows are added like:
for a in select * from [table with the same columns as json_table_2]
loop
json_table2 = coalesce (json_table2 || jsonb_agg(row_to_json (a)), jsonb_agg(row_to_json (a)) );
end loop;
So, because of the fact that the json_table2 is appended to in a random order, json_table2 now must be sorted.
thanks
On Mon, Aug 7, 2017 at 1:51 PM, Steve Midgley <science@misuse.org> wrote:
On Mon, Aug 7, 2017 at 1:13 PM, Michael Moore <michaeljmoore@gmail.com> wrote:This works, but surely there is a better way to do it:select jsonb_agg(row_to_json(alias)) from(Select * from jsonb_populate_recordset(null::tx_portal, json_table2) order by portal_name) alias into json_table2;It sorts the json_table2 array in "portal_name" order.I'm confused why you can't just pull portal_name from the json structure using "->"? For example, assuming your json structure that looks like:{"portal_name": "some data.."}And a table that looks like:| id | json_field |Wouldn't this sql work:select * from json_tableorder by json_field->'portal_name'Steve
В списке pgsql-sql по дате отправления: