将 SQL Server Delete 语句转换为使用内部联接

Convert SQL Server Delete statement to use inner join

我的目标是将以下查询转换为使用内部联接。

 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)

我的任务是将第一个查询转换为使用内连接语法。

试试这个:

 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)

直接匹配表:

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

SQL 如果您试图通过这样的连接多次删除同一行,服务器不会介意。此外,... IN(SELECT DISTINCT ... 无论如何都是毫无意义的,因为 IN returns 一旦找到一个符合条件的行就为真。