我試圖從2個表SQL查詢幫助從兩個表中
獲取非匹配記錄對於前
TableA
ID Account
1 Acc1
2 Acc2
3 Acc3
TableB
Opp Accountid
Opp1 1
Opp2 2
Opp3 4
獲取非匹配的記錄,我需要知道哪些ACCOUNTID這是目前在表B,但在TableA中不可用。很高興有人能解釋你將如何處理這個查詢。
需要的記錄將tableB的的Opp3
感謝
Prady
我試圖從2個表SQL查詢幫助從兩個表中
獲取非匹配記錄對於前
TableA
ID Account
1 Acc1
2 Acc2
3 Acc3
TableB
Opp Accountid
Opp1 1
Opp2 2
Opp3 4
獲取非匹配的記錄,我需要知道哪些ACCOUNTID這是目前在表B,但在TableA中不可用。很高興有人能解釋你將如何處理這個查詢。
需要的記錄將tableB的的Opp3
感謝
Prady
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
測試這一項
SELECT B.Accountid
FROM TableB AS B
LEFT
JOIN TableA AS A
ON A.ID = B.Accountid
AND A.ID IS NULL;
LEFT JOIN意味着需要從第一個表中的所有行 - 如果有第一個加入不匹配條件,表B的結果表列將爲空 - 這就是它工作的原因。
試試這個,你有兩個表中提到
上面的查詢選擇IDS從#two只不過選擇ID在相同的列數
(select * from t1
except
select * from t2)
union
(select * from t2
except
select * from t1)
思維從#one 將只從#two給你非匹配的行。它會忽略#one
我想你的意思是'左外部連接'。 – Oded 2011-04-30 07:16:44
OUTER是一個標準的,但可選的關鍵字。 – 2011-04-30 07:22:46
添加外連接有什麼區別嗎? – Prady 2011-04-30 07:23:44