使用以下数据,我尝试从两个表中删除匹配的记录。
Fruits
ID值
1 个苹果
2 梨
3 香蕉
4 葡萄
Animals
ID值
1 只 熊
2 猴子
3 苹果
4 Pig
这两个表之间没有定义的关系。
由于“Apple”出现在两个表中,我想从每个表中删除这条记录。
我尝试了以下查询来完成此任务:
DELETE DISTINCTROW Animals.*, Fruits.*
FROM Animals INNER JOIN Fruits ON Animals.Value = Fruits.Value;
但是,当我运行此命令时,我收到以下错误:
无法从指定表中删除。
我做错了什么,我能做些什么来解决这个问题?
如果不建立关系来利用级联删除,那么您就不走运了。 DELETE 语句一次对一张表起作用(级联删除(如果有)在幕后执行)。你别无选择,只能设计一些东西来实现你想要的。也许,通过宏,人们可以做这样简单的事情:
UPDATE Animals, Fruits SET Animals.Value="DELETED", Fruits.Value="DELETED" WHERE Animals.Value=Fruits.Value
DELETE Animals WHERE Animals.Value="DELETED"
DELETE Fruits WHERE Fruits.Value="DELETED"
除了制作复杂的 VBA 宏(也许还有临时表)之外,这已经是最好的了。
顺便说一句,我不认为即使使用更重型的数据库(例如 SQL Server 或 DB2)也可以完成此操作;对子查询或视图的 DELETE 仍然要求数据库系统可以将其解析为特定的表。
我猜你得到的错误是锁定行的问题(由于 INNER JOIN 的结果)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)