如果行存在,MySQL删除?

时间:2013-01-28 23:23:37

标签: mysql sql

我想删除数据肯定存在于 ad_master 中的多个表格中的数据,但子表格会不时变化。我尝试了以下查询,但它至少不会删除单个记录并保持沉默。 我想删除与我的给定号码($ delete_no)相关联的每条记录(如果它们存在于我的任何给定表格中)。

DELETE am,sub1,sub2,sub3
FROM ad_master am
INNER JOIN ad_vehicles sub1
ON sub1.Ad_no=am.Ad_no
INNER JOIN ad_properties sub2
ON sub2.Ad_no=am.Ad_no
INNER JOIN ad_electronics sub3
ON sub3.Ad_no=am.Ad_no
WHERE am.Ad_no=$delete_no

请指导我解决这个问题。感谢名单。

2 个答案:

答案 0 :(得分:5)

尝试LEFT JOIN而不是INNER。 使用INNER JOIN,您可以创建两个表的交集,如果ad_vehicles中不存在$ delete_no,则结果为空。

答案 1 :(得分:0)

您正在尝试实施参照完整性。让数据库做到这一点,它比你做得好多了。 Ad_no应该是除master之外的所有表中的外键,在每种情况下引用master,并定义为删除级联。然后你要做的就是删除主行。