0

这是两个表的值以及它们之间的关系

我正在尝试删除tblProInfo,tblOrderAAtblProInfo.proInfoScienceName='shalosh'中的所有行

这是我写的命令。我收到一条消息,它无法生成我的查询。

DELETE tblOrderAA.*,  tblProInfo.*
FROM tblProInfo INNER JOIN tblOrderAA ON tblProInfo.proInfoSerialNum = tblOrderAA.orderAASerialPro
WHERE (((tblProInfo.proInfoScienceName)='shalosh'
4

3 回答 3

3
DELETE a1,  a2
FROM tblProInfo as a1 INNER JOIN tblOrderAA as  a2
ON a1.proInfoSerialNum = a2.orderAASerialPro
WHERE a1.proInfoScienceName='shalosh'

根据 msaccess,语法是正确的,但不会删除记录。访问删除查询一次不能从多个表中删除。这是访问限制。

请参阅此处以了解有关从 MS-Access 中的多个表中删除记录的信息

如果两个表都已连接并且引用完整性设置为级联删除,那么您可以通过简单地删除链接一侧的记录来同时从两个表中删除记录。

在 Sql Server 中:
在单个 delete 语句中从多个表中删除行的概念在 sql server 中无法完成。在以级联样式执行删除的表上有触发器的概念。

于 2012-05-15T12:43:48.480 回答
0

在这一行中,您有 3 个左括号和 1 个右括号:

WHERE (((tblProInfo.proInfoScienceName)='shalosh'
于 2012-05-15T12:41:51.330 回答
0

你必须分开陈述。您不能通过一个查询从两个表中删除

DELETE FROM tblOrderAA
WHERE tblOrderAA.orderAASerialPro IN
(
    SELECT orderAASerialPro 
    FROM tblProInfo WHERE tblProInfo    
    tblProInfo.proInfoScienceName='shalosh'
)

DELETE FROM orderAASerialPro
WHERE tblProInfo.proInfoScienceName='shalosh'
于 2012-05-15T12:42:30.347 回答