2014-09-02 74 views
0

我是一名sql初學者。我面臨以下問題。作用於表連接的SQL命令

表1

c1,c2 
1,11 
2,22 

表2

c2,c3 
22,221 
22,231 

我不得不加入在C2上表,但消除連接結果C1的一排,當且僅當在表2中存在C2數據,所以我採取以下做法

第1步: -

select t1.c1, 
     t1.c2, 
     t2.c3 as c3 
into #temp 
from Table1 t1 
    left join Table t2 
     on t1.c2 = t2.c2 

第2步: -

delete from #temp where c3 is null 

這種做法實際上是刪除的1,11,null結果以及因爲它得到了作爲左連接的一部分創建。我只想要2,22,null的數據被刪除。

是否有可用的命令檢查這種情況?

謝謝!

+2

鑑於您的數據和查詢,不應創建'2,22,null'。 – 2014-09-02 14:36:20

+1

爲了討論起見,我們假設'{2,22,null}'將由另一個插入語句創建。爲什麼要刪除2而不是1 – 2014-09-02 14:39:33

+0

讓我驗證結果,因爲數據不在我面前。讓我來解決這個問題,並將結果再次提出問題。 – 100pipers 2014-09-02 14:48:04

回答

2

從您的問題中不清楚您使用的是什麼標準。無論如何,臨時表和刪除語句不是這裏的答案。一個簡單的WHERE子句應該覆蓋它:

select t1.c1, 
     t1.c2, 
     t2.c3 as c3 
from Table1 t1 
left join Table t2 on t1.c2 = t2.c2 
where t1.c2 <> 22 
+0

謝謝,但我正在關閉該問題並重新發布結果。 – 100pipers 2014-09-02 14:50:55

+2

@ 100pi不要關閉/轉貼!這就是Stack Overflow的工作原理。相反,**編輯**您的原始帖子。 – 2014-09-02 14:51:51