我是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
的数据。
是否有可用于检查此情况的命令?
谢谢!
答案 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