У меня есть этот SQL-запрос:Как вставить значение в массив json через postgresql?
SELECT array_to_json(array_agg(row_to_json(t)))
FROM (SELECT rendered_json, city_id FROM hotels WHERE id IN (1)) as t
и после выполнения я получаю:
"[{rendered_json:{address:Den Texstraat 16,city:Amsterdam,hotel_class:2,
currencycode:EUR,hotel_id:10003,hoteltype_id:14,latitude:52.3588347328288,
longitude:4.89386737346649,name:Asterisk Hotel,review_score:7.4,min_price:0.0},
city_id:-2140479}]"
Но я хочу, чтобы удалить поле rendered_json
и получить
"[{address:Den Texstraat 16,city:Amsterdam,hotel_class:2,
currencycode:EUR,hotel_id:10003,hoteltype_id:14,latitude:52.3588347328288,
longitude:4.89386737346649,name:Asterisk Hotel,review_score:7.4,min_price:0.0,
city_id:-2140479}]"
Если мой запрос:
SELECT array_to_json(array_agg(row_to_json(t)::json->'rendered_json'))
FROM (SELECT rendered_json, city_id FROM hotels WHERE id IN (1)) as t
тогда я теряю поле city_id
.
Как построить запрос для моих требований? Является ли это возможным?
заранее спасибо
Спасибо. Это работы! Но слишком много написания ... На самом деле в 'rendered_json' гораздо больше полей (я вырезал при создании вопроса) –
@DmitryKrakosevich Это слишком много написания, если вы пишете его более одного раза. Если вы пишете его более одного раза, напишите программу, чтобы сделать это за вас. – Schwern