Запрос выглядит так:
delete from t1
where exists (
select * from t1, t2
where t1.f1 = t2.f1
and t1.f2 = t2.f2
)
почему то удаляются все записи из t1, а подзапрос:
select * from t1, t2
where t1.f1 = t2.f1
and t1.f2 = t2.f2
Возвращает лишь то, что я хочу удалить из t1.
Почему так? Что поправить? Плииз поясните.
Здравствуйте, Аноним, Вы писали:
А>Запрос выглядит так:
А>А>delete from t1
А>where exists (
А>select * from t1, t2
А>where t1.f1 = t2.f1
А>and t1.f2 = t2.f2
А>)
А>
так delete удаляет все записи для который выражение в where истинно. А так как select внутри exists возвращает набор данных совершенно независимо от delete, то это все равно что написать delete from t1 where exists (select 1)
Я думаю так будет работать:
delete from t1
where exists ( select * from t2
where t1.f1 = t2.f1 and t1.f2 = t2.f2 )