Выбрать объект из массива объектов в Postgres

У меня есть таблица questions, где options - это jsonb, который представляет собой массив объектов.

"questions": [
        {
            "id": 76,
            "text": "What is the capital of Telangana ?",
            "options": [
                {
                    "id": 1,
                    "text": "Hyderabad",
                    "correct": true
                },
                {
                    "id": 2,
                    "text": "Bangalore",
                    "correct": false
                },
                {
                    "id": 3,
                    "text": "Amaravathi",
                    "correct": false
                },
                {
                    "id": 4,
                    "text": "Chennai",
                    "correct": false
                }
            ],
            "position": 1
        }

Может кто-нибудь помочь, как я могу выбрать объект option из options с помощью данного id с помощью PostgreSql?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
503
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете выбрать его. разложить и фильтр, например:

t=# with c(j) as (values('{"options": [
                {
                    "id": 1,
                    "text": "Hyderabad",
                    "correct": true
                },
                {
                    "id": 2,
                    "text": "Bangalore",
                    "correct": false
                },
                {
                    "id": 3,
                    "text": "Amaravathi",
                    "correct": false
                },
                {
                    "id": 4,
                    "text": "Chennai",
                    "correct": false
                }
            ]}'::jsonb))
, m as (select jsonb_array_elements(j->'options') a from c) select a from m where a->>'id' = '3';
                         a
---------------------------------------------------
 {"id": 3, "text": "Amaravathi", "correct": false}
(1 row)

Другие вопросы по теме