Например когда надо проверить (не)существование значений в другой таблице по заданным параметрам.
Самый простой вариант НЕ ПРАВИЛЬНЫХ запросов выглядит следующим образом
Вывести строки из t1, на которые есть ссылки в таблице t2
select * from t1
where exists(select * from t2 where t2.t1id = t1.id)
или на оборот,
select * from t1
where not exists(select * from t2 where t2.t1id = t1.id)
некоторые программисты начали пытаться ускорить код следующиими вариантами
select * from t1
where exists(select top 1 1 from t2 where t2.t1id = t1.id)
или на оборот,
select * from t1
where not exists(select top 1 1 from t2 where t2.t1id = t1.id)
Честно говоря я понимаю что есть ситуации когда без таких конструкций не обойтись, и в моей практике такое тоже встречалось. Но все же лучше пользоваться "умножения" таблиц
Получение строк, на которые есть ссылки в подчиненной таблице
select distinct t1.*
from t1inner join t2 on t2.t1id = t1.id
И получение строк, на которые нет ссылок в подчиненной таблице
select distinct t1.*
from t1left join t2 on t2.t1id = t1.idwhere t2.id is null
Вобщем пользуйтесь на здоровье, и избегайте не нужной работы серверов