访问exists子句中的列

时间:2014-01-14 15:58:45

标签: sql-server-2008

select * 
from AllUK  
where exists (select  * from AllCompanies where replace(AllUK.mobile,' ','')=replace(AllCompanies.mobile,' ',''))

我需要将AllCompanies表中的列包含在我的第一个选择中。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

select *
from AllUK a
join AllCompanies b
on a.mobile = b.mobile

exists是一个布尔运算,因此如果有任何记录可以在2个表中连接,则上面的子句将始终返回所有结果。很难说出你真正想要实现的目标。

此外,将字符串操作放在存在和连接中的列上并不是最佳实践,因为编译器必须对每一行进行操作。列在运行时。可能最好创建一个临时表来保存替换的值,然后加入它。