我正在尝试使用 DELETE
MS Access 中的子句,并且在使用 JOIN
时出现问题条款。我注意到这可以通过使用 DISTINCTROW
来完成。关键词。
例如,下面的 SQL 语句不允许删除:
DELETE Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
但是,此语句确实:
DELETE DISTINCTROW Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
DELETE
使用 DISTINCTROW
时工作关键词? 最佳答案
Delete Table1.*
From Table1
Where Exists( Select 1 From Table2 Where Table2.Name = Table1.Name ) = True
为了扩展我的回答,官方 SQL 规范没有专门规定在操作查询中使用连接,因为它会产生不明确的结果。因此,如果您可以像我在这里那样避免在操作查询中使用联接,那就更好了(而且 Access 更快乐)。 Access 需要 DISTINCTROW 的原因是两个表之间的连接很可能会创建 Table1 行的重复项(即,Table2 中有多个相关行),因此 Access 会感到困惑。我还发现,如果您尝试使用 Join 而主键不存在,Access 会犹豫不决。一般来说,如果可以,最好避免在操作查询中加入。
关于sql - 使用 JOIN 时如何在 MS Access 中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585732/