SQL命令作用于表连接

时间:2014-09-02 14:34:32

标签: sql sql-server

我是sql的初学者。我遇到了以下问题。

表1

c1,c2
1,11
2,22

表2

c2,c3
22,221
22,231

我必须在c2上连接表,但是当且仅当表2中存在c2的数据时,才从连接结果中删除一行c1,因此我采用以下方法

第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的数据。

是否有可用于检查此情况的命令?

谢谢!

1 个答案:

答案 0 :(得分: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