Sql Query поможет получить несоответствующие записи из двух таблиц - PullRequest
7 голосов
/ 30 апреля 2011

Я пытаюсь получить несоответствующие записи из 2 таблиц

Например,

TableA
 ID           Account
 1               Acc1
 2               Acc2
 3               Acc3

 TableB
 Opp          Accountid
 Opp1            1
 Opp2            2
 Opp3            4

Мне нужно знать, какой учет присутствует в TableB, но недоступен в TableA.Было бы замечательно, чтобы кто-то мог объяснить, как вы подходите к этому запросу.

Требуется запись Opp3 таблицы B

Спасибо

Prady

Ответы [ 4 ]

10 голосов
/ 30 апреля 2011
create table #one (id int,acc nvarchar(25))
insert into #one (id , acc) values(1,'one') 
insert into #one (id , acc) values(2,'two') 
insert into #one (id , acc) values(3,'three') 

create table #two (acct nvarchar(25),ids int)
insert into #two (acct,ids) values('one',1) 
insert into #two (acct,ids) values('two',3) 
insert into #two (acct,ids) values('four',4) 

select ids from #two EXCEPT select id from #one 

drop table #one 
drop table #two 

проверить это

5 голосов
/ 30 апреля 2011
SELECT B.Accountid 
  FROM TableB AS B 
  LEFT 
  JOIN TableA AS A 
    ON A.ID = B.Accountid 
 WHERE A.ID IS NULL;

LEFT JOIN означает, что он берет все строки из первой таблицы - если нет совпадений по первому условию соединения, столбцы таблицы результатов для таблицы B будут нулевыми - поэтому он работает.

3 голосов
/ 02 декабря 2011
SELECT B.Accountid
FROM TableB AS B 
LEFT JOIN TableA AS A ON A.ID = B.Accountid 
WHERE A.ID IS NULL
2 голосов
/ 01 июня 2011

попробуйте

(select * from t1
except 
select * from t2)

union

(select * from t2
except 
select * from t1)

, думая, что у вас одинаковое количество столбцов в обеих таблицах.

запрос, упомянутый выше.соответствующие строки только из #two.он будет игнорировать тот из #one

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...