查询在 SQL 2008 中有效,但在 Access 2016 中无效。删除具有相同 RevInv 但不同 InvValue 的记录

Query working in SQL 2008 but not in Access 2016. Delete records with same RevInv but different InvValue

DELETE FROM [SampleData34] WHERE [RevInv] IN 
( SELECT t.[RevInv] FROM[SampleData34] s JOIN
( SELECT [RevInv], [Invoice Value] 
  FROM SampleData34 GROUP BY [RevInv],[Invoice Value]
  HAVING COUNT(*) >=1
 ) t 
 ON s.[RevInv]=t.[RevInv] AND s.[Invoice Value]<>t.[Invoice Value]
)

这段代码逻辑如下:

table 具有重复的 RevInv 值 - 发票值相同或不同。 我想识别(并删除)所有具有不同发票值(相同 RevInv 编号但发票值不同)的记录。在某些情况下我们没有重复项,即只有一个 RevInv Number 和相应的 InvValue(不需要包括这些情况)

示例数据

RevInv InvoiceValue  
1111   100  
1112   101  
1112   101  
1113   102  
1113   103  

(应删除 1113 102 和 1113 103 - 相同 RevInv 的不同 InvValues)

上述查询在 SQl 中有效,但在 Access 中我收到此错误:

Syntax error in query expression '[RevInv] IN ( SELECT t.[RevInv] FROM [SampleData34] s JOIN ( SELECT [RevInv], [Invoice Value] FROM SampleData34 GROUP BY [RevInv],[Invoice Value] HAVING COUNT(*)>=1 ) t ON s.[RevInv]=t.[RevInv] AND s.[Invoice Value]<>t.[Invoice Value])'.

需要连接类型,在本例中,INNER 有效。

DELETE FROM SampleData34 WHERE [RevInv] IN (SELECT t.RevInv FROM SampleData34 s INNER JOIN (SELECT [RevInv], [Invoice Value] FROM SampleData34 GROUP BY [RevInv], [Invoice Value] HAVING COUNT(*) >=1 ) t ON s.RevInv = t.RevInv AND s.[Invoice Value]<>t.[Invoice Value] );

Access 不会只接受裸 JOIN 关键字。它必须是 INNER、LEFT 或 RIGHT 连接。我相信 SQL 服务器默认为 INNER。