Вы можете использовать LEFT OUTER JOIN:
select t1.*
from table1 t1
LEFT OUTER JOIN table2 t2
ON t1.id = t2.id
WHERE t2.id IS NULL
LEFT OUTER JOIN
говорит, что нужно взять все результаты из таблицы LEFT-Most (здесь * table1
) и только те результаты из вашей объединенной таблицы (table2
здесь), которые соответствуют условию ON
.Фильтруя в предложении WHERE
, чтобы отбрасывать любые результаты, где table2.id
IS NULL, вы фактически оставляете только T1
результаты, которые не соответствуют T2
.
Также старайтесь держаться подальше от типа неявного соединения FROM table1, table2
.Это очень старая школа.INNER JOIN
, LEFT OUTER JOIN
, RIGHT OUTER JOIN
- лучшие варианты практически для любой ситуации.