Как удалить строки из двух таблиц, которые являются общими для одного запроса в postgresql - PullRequest
0 голосов
/ 06 июля 2018

У меня есть две таблицы t1 и t2

Таблица t1 выглядит следующим образом:

id   name
1     x
2     y
3     z

Таблица t2 выглядит следующим образом:

id      name
1         a
121       b
131       c

Здесь я выбираю строки, которые являются общими в обеих таблицах, т.е.

SELECT * 
from t1,t2 
where t1.id=t2.id;

Теперь я хочу удалить строки, когда id = 1 в обеих таблицах одновременно. Я пытался удалить строки, но я могу удалить только в одной таблице, но не в обеих. Может кто-нибудь помочь мне в решении этого.

1 Ответ

0 голосов
/ 06 июля 2018

Вы можете сделать это с помощью данных, изменяющих общее табличное выражение

with common_ids as (
   select id 
   from t1
   intersect
   select id 
   from t2
), t1_delete as (
   delete from t1
   where id in (select id from common_ids)
)
delete from t2
where id in (select id from common_ids);

Онлайн пример: http://rextester.com/NAQ26877

...