Мне непонятно, что вы хотите получить, но, может быть, вы ищете это:
with sample_data (js) as (
values ('{"6": {"id": "6", "name": "book-name", "genre": "history", "book_id": "3"}}'::jsonb)
)
select x.v
from sample_data sd
cross join lateral jsonb_each(sd.js) as x(k,v)
Вышеприведенное вернет:
v
--------------------------------------------------------------------
{"id": "6", "name": "book-name", "genre": "history", "book_id": "3"}
Если вы хотите индивидуальныйключ / значения, то вы можете использовать
with sample_data (js) as (
values ('{"6": {"id": "6", "name": "book-name", "genre": "history", "book_id": "3"}}'::jsonb)
)
select d.*
from sample_data sd
cross join lateral jsonb_each(sd.js) as x(k,v)
cross join lateral jsonb_each_text(x.v) as d(k,v);
Выше вернется:
k | v
--------+----------
id | 6
name | book-name
genre | history
book_id | 3