使用MyISAM从多个表中删除

时间:2015-01-09 19:21:15

标签: php mysql sql join

我已经尝试了很多很多组合,但似乎都没有工作=(

我有这两个SQL命令:

$sql = "DELETE FROM infogt2000_partner_lead_invoice WHERE infogt2000_partner_lead_invoice_lead_id = ".$id_invoice;
$sql = "DELETE FROM infogt2000_partner_lead  WHERE infogt2000_partner_lead_id = ".$id;

他们必须一起执行""。好吧,如果我从partner_lead中删除了一个信息,它还必须从infogt2000_partner_lead_invoice中删除相同的信息。 infogt2000_partner_lead_id和infogt2000_partner_lead_invoice_lead_id中的id是相同的,但我无法正确写入。

我目前正在使用MySQL,类型是MyISAM

2 个答案:

答案 0 :(得分:0)

您应该考虑将数据库表转换为InnoDB,以便您可以创建外键约束以在删除时级联。否则,您必须编写多个查询,从层次结构链中的最低项开始,一直到最父表。例如:删除孙子,然后是孩子,然后是父母。

答案 1 :(得分:0)

我猜您需要使用内连接:

DELETE infogt2000_partner_lead_invoice, infogt2000_partner_lead
FROM infogt2000_partner_lead_invoice
INNER JOIN infogt2000_partner_lead
WHERE infogt2000_partner_lead_invoice.infogt2000_partner_lead_invoice_lead_id = infogt2000_partner_lead.infogt2000_partner_lead_id
AND infogt2000_partner_lead_invoice_lead_id = $id