這是一個有點不清楚你想要的最終結果是什麼,但要回答你的問題是否有可能做到這一點沒有臨時表?是的 - 你可以這樣做:
select customernumber, name from customers1
UNION
(
select customernumber, name from customers2
where customernumber not in (select customernumber from customers1)
)
order by customernumber
這將返回從customers1和customers2從customers2刪除customer1表ID的行由一組,我想這是你想要的。
如果你想擺脫重複的行,這是由UNION
完成,因爲你沒有添加ALL
選項。
有了這個測試設置:
declare @customers1 table (customernumber int, name char)
declare @customers2 table (customernumber int, name char)
insert @customers1 values (1,'a'),(2,'b')
insert @customers2 values (3,'d'),(4,'e'),(1,'f')
select customernumber, name from @customers1
UNION
(
select customernumber, name from @customers2
where customernumber not in (select customernumber from @customers1)
)
order by customernumber
輸出將是:
customernumber name
1 a
2 b
3 d
4 e
來源
2014-10-29 23:36:13
jpw
如果什麼CUSTOMERNUMBER和名稱的組合是不同的。例如,在表1中,我的客戶編號爲1,名稱爲'john',但在表2中,我的客戶編號爲1,名稱爲'johnny'。我希望能夠從表2中濾除'johnny'記錄。 – dtc 2014-10-29 23:38:12
這是一種自定義過濾,在這種情況下,您應該做正在做的事情。稍微修改一下你的查詢,看看編輯的答案。 – Rahul 2014-10-29 23:39:59