эти жсоны? задача не ясна вообщн
Задача в том, чтобы из: select to_json(t) from (select 1,2,3) t; Сделать: select to_json(select 1,2,3); Где to_json — функция(или последовательный набор) функций, которые смогут заработать в таком варианте (сам to_json работает только с первым вариантом)
select row_to_json(row(1,2,3)); ? select to_json(row(1,2,3));?
Добрый день! row(1,2,3) то да, а вот row(select 1,2,3) уже не заработает ибо нет такого конструктора ... Соль ведь в том чтобы не используя from достать какие-то полезные данные, например так: select to_json(table t limit 1)
вы точнее формулируйте то, что вы хотите, ваше первое сообщение вообще о другом на мой взгляд.
Это связано с тем что требования к задаче формировались динамически, за что прошу прощения, а это в свою очередь связано с тем что задача теоретического характера. На текущий момент в лаконичной форме звучит так: извлечь из таблицы t данные любой строки по одному конкретному столбцу или конкатенации столбцов (чтобы в итоге таки был один возвращён) через select без from.
формально под ваше требование подходит пользовательская функция, но под капотом она будет использовать from
Такой вариант к сожалению не подходит. На текущий момент я лишь «придумал», как убедиться в существовании таблицы и/или в существовании конкретной строки в таблице (знать для этого имена колонок не надо), не используя from, но этого недостаточно (однако уже что-то). Вот так: select 1 where('1','foo') in (table t) select 1 where exists(table t limit 1) Первый запрос вернёт «1» в случае существования такого кортежа/строки в таблице (иногда ::text не всегда сможет кастоваться в нужный тип столбца, кажется, но это не большая проблема), иначе NULL Второй запрос соотв. вернёт «1» при наличии таблицы иначе констатирует ошибку.
это никак не приблизило вас к решению задачи.
Заучит оптимистично. Подразумевалось, что это позволяет узнать хоть какую-то полезную информацию. Но вы правы, поставленную задачу это никак не решает.
Обсуждают сегодня