Ограничить количество объектов в массиве postgresql jsonb_agg

У меня есть этот запрос:

SELECT jsonb_agg(jsonb_build_object('me_id', me_id)) from message

и получил следующий результат:

[{"me_id": 2064}, {"me_id": 2065}, {"me_id": 2066}, {"me_id": 2067}, {"me_id": 2068}, {"me_id": 2069}, {"me_id": 2070}, {"me_id": 2071}]

Все идет нормально. Однако я хочу ОГРАНИЧИТЬ количество объектов в массиве. Например, до 3. Но добавление LIMIT 3 не работает.

Как я могу ограничить количество объектов в массиве?

Обновлено: Ответ @ GMB решил эту проблему. Спасибо!

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

Ответы 1

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

Вам понадобится подзапрос:

select jsonb_agg(jsonb_build_object('me_id', me_id)) 
from (select * from message order by me_id limit 3) t

Эй, это почти помогло... Однако, когда я хочу сделать ЛЕВОЕ СОЕДИНЕНИЕ сейчас, я получаю неоднозначное значение "me_id": --> SELECT jsonb_agg(jsonb_build_object('id', me_id)) from (select * FROM message LEFT JOIN message_photo ON (message_photo.me_id = message.me_id) порядок по message.me_id DESC ограничение 3) t

André 23.12.2020 03:05

В наборе результатов подзапроса есть два столбца с именем me_id, так что это неоднозначно. Используйте что-то вроде select message.m_id from .... Или вы можете использовать синтаксис USING в соединении, чтобы устранить двусмысленность.

GMB 23.12.2020 03:08

Можете ли вы сказать мне точный запрос, пожалуйста? Я немного ошеломлен этим. Я пытался использовать SELECT message.m_id, но потом получаю эту ошибку: отсутствует запись FROM-clause для таблицы "message"

André 23.12.2020 03:10

@André: в своем коде просто замени ON (message_photo.me_id = message.me_id) на USING (me_id). Или: замените select * на select message.m_id.

GMB 23.12.2020 03:11

Большое спасибо, что решили это !! Вы очень помогли, большое спасибо.

André 23.12.2020 03:24

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