Здравствуйте IT, Вы писали:
IT>Есть две таблицы следующей структуры и содержания:
IT>IT># T1 T2
IT> F1 F2 F1 F2
IT>1 A 1 A 1
IT>2 B 2 B 2
IT>3 C 2 D 1
IT>4 B 1
IT>5 A 3
IT>
IT>Нужно вывести записи из таблицы T1, в которых комбинация полей НЕ соответствует комбинации полей в таблице T2, т.е. записи с номерами 3, 4, 5.
Три способа :-)
Универсально, но медленно на больших таблицах, т.к. запрос — коррелированный
SELECT *
FROM t1
WHERE NOT EXISTS( SELECT * FROM t2 WHERE t2.f1=t1.f1 and t2.f2=t1.f2)
Если у Вас ORACLE то можно очень просто:
SELECT * FROM t1
MINUS
SELECT * FRM t2
Или так, должно работать быстрее всего:
select t1f1, t1f2
from
(
select t1.f1 t1f1, t1.f2 t1f2, t2.f1 t2f1, t2.f2 t2f2
from t1 left outer join t2 on (t1.f1=t2.f1 and t1.f2=t2.f2)
) t3
where t3.t2f1 is null
and t3.t2f2 is null