如何删除所有相关记录?

时间:2019-04-04 13:15:21

标签: sql ms-access inner-join

我正在尝试删除用户以及与他相关的所有相关记录,并且我不知道如何使用SQL INNER JOIN语句,有什么方法可以执行以下操作:

DELETE * FROM tblUsers, tblEnrollment, tblLinkActivities, tblFullSchedule, tblSchedule, tblLinkMedical
WHERE [IDUser] = ?

(我知道那是完全不正确的)

我的关系图如下:

Relationships

使用6个删除命令会更容易吗?还是有另一个命令可以做到这一点?谢谢一堆。

2 个答案:

答案 0 :(得分:1)

由于您已经定义了具有参照完整性的关系,因此只需为每个关系设置级联删除相关记录选项。

请参见https://support.office.com/en-us/article/create-edit-or-delete-a-relationship-dfa453a7-0b6d-4c34-a128-fdebc7e686af#__bmcascade

这样,您只需要从tblUsers中删除,所有相关记录就会自动删除。

如果您不能或不想这样做,则需要在删除主记录之前对相关表运行单独的删除查询。

答案 1 :(得分:0)

在单个sql查询中无法同时删除多个表中的记录。您需要编写多个delete语句。更好的方法是编写一个涉及所有表的内部查询,并在每个表中删除。 例如: 从DEPTNO IN的部门删除(从emp a中选择a.DEPTNO,在a.DEPTNO = b.DEPTNO和a.DEPTNO = 10的部门b中选择a.DEPTNO) 从emp中删除DEPTNO IN(从emp a中选择a.DEPTNO,在de.b中选择a.DEPTNO = b.DEPTNO