Удаление из таблицы с использованием двух столбцов и нескольких других таблиц

-4

Используя SQL Server 2008, я пытаюсь выработать сжатый способ удаления записей из таблицы только в том случае, если идентификатор из двух его столбцов не во всех трех других таблицах. Используя эти таблицы в качестве примера:

table1

ID1  ID2
--------
A 1
B 1

table2

ID1  ID2
--------
A 1
B 1

table3

ID1  ID2
--------
A 1
B 1

table4

ID1  ID2
--------
A 1

Я хотел бы удалить записи из table1 где идентификаторы ID1 и ID2 не существуют в таблицах 2-4. После удаления на основе этих условий table1 следует просто оставить:

ID1    ID2
----------
A 1

спросил(а) 2021-01-25T15:54:51+03:00 4 месяца, 2 недели назад
1
Решение
117

Вы можете попробовать это.

Использовать NOT exists и Inner join может заставлять вас ожидать.


DELETE table1
WHERE NOT exists
(
SELECT 1
FROM table1 t1
INNER JOIN table2 t2 on t1.ID1 = t2.ID1 and t1.ID2 = t2.ID2
INNER JOIN table3 t3 on t1.ID1 = t3.ID1 and t1.ID2 = t3.ID2
INNER JOIN table4 t4 on t1.ID1 = t4.ID1 and t1.ID2 = t4.ID2
WHERE table1.ID1 = T1.ID1 AND table1.ID2 = T1.ID2
)

Скрипт: http://sqlfiddle.com/#!18/a810a/1

ответил(а) 2021-01-25T15:54:51+03:00 4 месяца, 2 недели назад
44

По-другому.

delete from table1
where id1 + castid2 as varchar(10)
in
(select id1 + castid2 as varchar(10)
from table1
except
select id1 + castid2 as varchar(10)
from table2
)
and
id1 + castid2 as varchar(10)
in
(same for the other tables).

ответил(а) 2021-01-25T15:54:51+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема