MySQL - 如何删除多对多关系中的相关行

时间:2016-09-02 21:16:22

标签: mysql sql sql-delete

例如,如果删除客户,则将删除其他表(S)上的所有相关行。怎么做那个mysql,我花了一个小时尝试了很多解决方案,但没有人工作。enter image description here

2 个答案:

答案 0 :(得分:2)

最简单的方法实现这一点是与 ON DELETE CASCADE选项的设计相关的表格。

基本上,当您设计具有外键的数据库表(其他表上的主键)时,您可以为该外键设置ON DELETE CASCADE 。这意味着当在主表上删除记录(此外键为主键的表)时,其他表上的所有相关记录也将被删除

因此,你不需要考虑创造"疯狂"查询以删除多个表上的相关数据。

您可以在以下链接中了解有关ON DELETE CASCADE的更多信息:mysqltutorial.org/mysql-on-delete-cascade

答案 1 :(得分:1)

您必须首先DELETE地址,客户和关系之后 或者您可以尝试使用DELETE级联...但要小心http://www.mysqltutorial.org/mysql-on-delete-cascade/ 也看到了这一点:MySQL on delete cascade. Test Example

DELETE FROM Addresses WHERE AddressID IN (SELECT AddressID FROM Custormers_Addresses WHERE CustormerID = ID)

那么..删除客户 DELETE FROM Customers WHERE CustomerID = ID

那么..删除关系 DELETE AddressID FROM Custormers_Addresses WHERE CustormerID = ID