From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Ken Tanzer <ken(dot)tanzer(at)gmail(dot)com> |
Cc: | Steve Baldwin <steve(dot)baldwin(at)gmail(dot)com>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Rob Sargent <robjsargent(at)gmail(dot)com>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Extracting data from jsonb array? |
Date: | 2020-12-08 04:16:18 |
Message-ID: | 3210187.1607400978@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Ken Tanzer <ken(dot)tanzer(at)gmail(dot)com> writes:
>> => select f.id, f.f1,f.f2,array_agg(t.key2) from foo as f,
>> jsonb_to_recordset(js) as t(key2 text) group by f.id;
> After a little more thought and experimenting, I'm not so sure about this
> part. In particular, I'm not clear why Postgres isn't complaining about
> the f1 and f2 fields. (It's not giving the "must appear in the GROUP BY
> clause or be used in an aggregate function" error that I would expect, and
> that I am getting when I try to apply this to my real query.)
> Can anyone explain to me why those fields don't need to be grouped? Thanks.
If foo.id is a primary key, it knows that the "group by" doesn't really
merge any rows of foo, so it lets you get away with that. I think this
is actually required by spec, but am too lazy to go check right now.
If foo.id isn't a primary key, then I'm confused too. Can we see the
full declaration of the table?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Steve Baldwin | 2020-12-08 04:16:59 | Re: Extracting data from jsonb array? |
Previous Message | Steve Baldwin | 2020-12-08 04:09:33 | Re: Extracting data from jsonb array? |