Cur*_*che 24 sql ms-access delete-row sql-delete
我试图DELETE在MS Access中使用该子句,并在使用该JOIN子句时遇到问题.我注意到这可以通过使用DISTINCTROW关键字来完成.
例如,以下SQL语句不允许删除:
DELETE Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
Run Code Online (Sandbox Code Playgroud)
但是,这句话的确如下:
DELETE DISTINCTROW Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
Run Code Online (Sandbox Code Playgroud)
DELETE使用DISTINCTROW关键词时为什么要工作?Tho*_*mas 24
Delete Table1.*
From Table1
Where Exists( Select 1 From Table2 Where Table2.Name = Table1.Name ) = True
Run Code Online (Sandbox Code Playgroud)
为了扩展我的答案,官方SQL规范没有特别提供在动作查询中使用Joins,因为它可能会产生模糊的结果.因此,如果您可以避免在我这里使用动作查询中使用连接,那么它会更好(并且Access更快乐).Access想要DISTINCTROW的原因是两个表之间的连接可能会创建Table1行的重复(即,表2中有多个相关的行),因此Access变得混乱.我还发现,如果你尝试使用Join并且主键不存在Access将会阻止.通常,如果可以,最好避免在动作查询中加入.
| 归档时间: |
|
| 查看次数: |
69039 次 |
| 最近记录: |