Оператор Postgresql WITH несколько удалений

Я могу сделать это в Postgresql?

with userToDelete as (
    select userid from users where condition;
) (
    delete from table1 where user_id = userToDelete;
    delete from table2 where userid = userToDelete;
    delete from table3 where user_id = userToDelete;
);

Я посмотрел, но ничего не нашел. Спасибо.

Всего 1 ответ


Вам нужно несколько CTE:

with userToDelete as (
  select userid 
  from users 
  where condition
), t1 as (
  delete from table1 
  where user_id in (select userid from userToDelete)
), t2 as (
  delete from table2 
  where userid in (select userid from userToDelete)
)
delete from table3 
where user_id in (select userid from userToDelete);

Обратите внимание, что есть только один сингл ; закончить все утверждение.


Есть идеи?

10000