Возвращаемое обновление * и выберите результат в виде строк

#sql #postgresql

Вопрос:

Я хочу запустить несколько обновлений в одном запросе, возвращающем*, и выбрать выходные данные в виде строк. В настоящее время у меня есть

 with
  foo as (update table set .. where id = $1 retuning *),
  bar as (update table set .. where id = $2 retuning *)
select * from table where id = $1 or id = $2;
 

Это делает то, что я ищу, но мне кажется, что это можно улучшить. Я почти заставил его работать вот так

 select * from foo, bar
 

но он отображается в виде одной строки, а не двух отдельных строк

Ответ №1:

Я думаю, что вы просто хотите union all (или, возможно, «союз1»):

 select foo.*
from foo
union all
select bar.*
from bar;