Как получить непревзойденные и отсутствующие записи из двух таблиц в sql server

#sql #sql-server

#sql #sql-сервер

Вопрос:

У меня есть две таблицы Table1 и Table2 с некоторыми записями

Как выбрать несопоставимые и отсутствующие записи столбца из двух таблиц в sql server

Таблица1

 id      name     place

1        AAAA     bangalore

2        BBBB      IDLE

3        CCCC     Chennai

4        DDDD    NOT Reachable
 

Таблица 2

 id     name     dept             place           

1       AAAA     IT                   bangalore

2       BBBB     Sales              mumbai

3       CCCC    Support         Chennai

4       DDDD    IT                   Delhi

5       MMMM    Software                   Mumbai
 

Я хочу, чтобы результат был таким

 id      name    

2        BBBB    

4        DDDD    

5   MMMM    
 

я получил несопоставимые строки, используя ниже. как я могу получить непревзойденные и отсутствующие записи в одном запросе select?

 select   t2.name[place from table2]
from tab1 t1 inner join tab2 t2
on t1.id = t2.id and t1.place <> t2.place
 

Ответ №1:

Хммм … Если я правильно понимаю, вы хотите, чтобы все, table2 что не имеет соответствующего соответствия. table1 Для этого вы можете использовать not exists :

 select t2.*
from table2 t2
where not exists (select 1
                  from table1 t1
                  where t1.id = t2.id and t1.name = t2.name and
                        t1.place = t2.place
                 );