Подтвердить что ты не робот

Противоположный внутренний запрос

может кто-нибудь помочь мне написать sql для scernerio следующим образом:

Table 1

2 columns: ID, Name

Table 2

2 columns: ID, Name

Я хочу, чтобы запрос показывал имена из Таблицы 1, которые не указаны в таблице 2. Таким образом, отфильтруйте все имена в таблице 1, которые приведены в таблице 2, являются результатом запроса. Используйте идентификатор для фильтрации, а не имя.

Это поможет мне в том, что я пытаюсь сделать. Спасибо заранее

4b9b3361

Ответ 1

Select * from table1
left join table2 on table1.id = table2.id
where table2.id is null

Ответ 2

Это должно работать лучше, чем версия left join...is null. См. здесь и здесь для сравнения.

select t1.id, t1.name
    from table1 t1
    where not exists(select null from table2 t2 where t2.id = t1.id)

Ответ 3

Использовать этот запрос

select
t1.*
from table1 t1
left outer join table2 t2
on t1.id=t2.id
where t2.id is null

это работает, соединяя все в t1 с тем, что существует в t2. предложение where отфильтровывает все записи, которые не существуют в t2.

Ответ 4

SELECT Table1.ID, Table1.Name, Table2.ID 
FROM Table1 LEFT OUTER JOIN Table2 ON Table1.ID = Table2.ID 
WHERE Table2.ID IS NULL 

Я думаю, что он должен это сделать.