2017-04-12 49 views
0

我的目标是将下面的查询转换为使用内部连接。转换SQL Server删除语句以使用内部连接

DELETE ##TABLE1  
FROM ##TABLE1 A, ##TABLE2 B  
WHERE A.VND_ACCT_NUM in (select distinct VND_ACCT_NUM from ##TABLE2)  

我想是这样的,但它看起来不正确:

DELETE ##TABLE1  
FROM ##TABLE1 A 
INNER JOIN ##TABLE2 B  
ON A.VND_ACCT_NUM in (select distinct VND_ACCT_NUM from ##TABLE2) 

我的任务是使用内部联接语法第一查询转换。

+0

我们喜欢代码块的原因 - 他们给我们语法突出显示,并防止意外删除重要的间距细节。请留下你的问题。 –

+0

当然,谢谢。 –

+0

请小心使用全局临时表。他们经常会导致并发问题。 –

回答

0

刚上来直接匹配的表:如果您试图通过这样的加盟删除同一行多次

DELETE FROM A  
FROM ##TABLE1 A 
INNER JOIN ##TABLE2 B  
ON A.VND_ACCT_NUM i= B.VND_ACCT_NUM 

SQL Server不介意。而且,... IN(SELECT DISTINCT ...无论如何都是毫无意义的,因为IN一旦找到合格的行就会返回true。

0

试试这个:

DELETE A  
FROM ##MX_DEALS A 
INNER JOIN ##MX_DAR_ISSUE_DEALS B  
ON A.VND_ACCT_NUM in (select distinct VND_ACCT_NUM from ##MX_DAR_ISSUE_DEALS)