sql – 删除多对多关系中的相关行
发布时间:2020-05-24 08:58:45 所属栏目:MsSql 来源:互联网
导读:我正在删除多对多关系的一个站点上的表中的一行.我还想删除该关系另一侧的任何相关行. 例如,假设我有以下表格,我想从Cars中删除一行.我还想删除Drivers中的任何相关行,当然还有CarDrivers中不再需要的任何行. Table Cars:CarID intCarName nvarchar(100)Table
|
我正在删除多对多关系的一个站点上的表中的一行.我还想删除该关系另一侧的任何相关行. 例如,假设我有以下表格,我想从Cars中删除一行.我还想删除Drivers中的任何相关行,当然还有CarDrivers中不再需要的任何行. Table Cars: CarID int CarName nvarchar(100) Table Drivers: DriverID int DriverName nvarchar(100) Table CarDrivers: CarID int Driver int 我知道如何在SELECT查询中加入上面的表.但我不知道如何删除关系中的数据. 注意:关系的两端都实现了级联删除.因此,例如,从Cars中删除一行将删除CarDrivers中的任何相关行.但显然这不会传播到Drivers表. 解决方法我认为最好的方法是你必须先删除相关表的数据.换句话说,如果您想要删除汽车以及使用该汽车的相应司机,您必须首先删除驱动程序,然后删除汽车.由于ON CASCADE DELETE,连接表将删除正确的记录.试试这个: delete
from Drivers
where DriverID in
(
select d.DriverID
from Drivers d
inner join CarDrivers cd
on d.DriverID = cd.Driver
inner join Cars c
on c.CarID = cd.CarID
where c.CarID = 1
)
delete
from Cars
where CarID = 1
当然,您不需要对其进行硬编码,如果您在存储过程中使用此代码段,则可以使用包括参数在内的任何内容. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – MSSQL:如何查找具有引用特定table.column的
- SQL Server OBJECTPROPERTY与sp_rename更改对象名称的介绍
- show engine innodb status显示信息不全如何解决
- MSSQL存储过程学习笔记一 关于存储过程
- SQL Server运行asp.net程序 报错:磁盘空间不足
- SQL Server SQL语句去掉重复记录,获取重复记录
- sql – 使用ORDER BY选择COUNT(*)
- 巧妙利用PARTITION分组排名递增特性解决合并连续相同数据行
- sql-server-2005 – 如何使用Powershell枚举SQL Server角色
- sql-server – INSERT语句中的行值表达式数超过了允许的最大
