Как вывести из таблицы только строки, которых нет в другой таблице?

Предположим, есть таблица t1:

id name
-- ----------
 1 Владимир
 2 Татьяна
 3 Александр
 4 Борис

И есть ее частичный дубликат t2:

id name
-- ----------
 1 Владимир
 2 Татьяна

Как вывести из таблицы t1 строки, которых нет в таблице t2?

Можно ли это сделать без подзапросов?


Ответы (2 шт):

Автор решения: Akina
SELECT t1.*
FROM t1
NATURAL LEFT JOIN t2
WHERE t2.id IS NULL
→ Ссылка
Автор решения: 0xdb

Вот как звучит вопрос - вывести из таблицы t1 строки, которых нет в таблице t2, так и пишите (только по английски):

select t1.*
from t1
where not exists (
    select 1 
    from t2 
    where t2.id = t1.id) 

Доп. вопрос: Можно ли это сделать без подзапросов?. Можно, но вряд ли нужно, т.к. скорее никаких преимуществ это не даст:

select t1.*
from t1
left join t2 on t2.id = t1.id 
where t2.id is null
→ Ссылка