Re: Better way to sort a JSONB array?

From: Michael Moore <michaeljmoore(at)gmail(dot)com>
To: Steve Midgley <science(at)misuse(dot)org>
Cc: postgres list <pgsql-sql(at)postgresql(dot)org>
Subject: Re: Better way to sort a JSONB array?
Date: 2017-08-07 21:12:35
Message-ID: CACpWLjOazZxLNerPJvmi8BBzmuqbhFhv+Xu0jD3Qj-YL2=qf-A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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;

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(at)misuse(dot)org> wrote:

> On Mon, Aug 7, 2017 at 1:13 PM, Michael Moore <michaeljmoore(at)gmail(dot)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 "->"
> <https://www.postgresql.org/docs/current/static/functions-json.html>? 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_table
> order by json_field->'portal_name'
>
> Steve
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Steve Midgley 2017-08-07 21:17:49 Re: Better way to sort a JSONB array?
Previous Message Steve Midgley 2017-08-07 20:51:37 Re: Better way to sort a JSONB array?