在一个PDO查询中删除多个表中的相同值?

时间:2016-06-15 18:27:14

标签: php mysql

memo_info表memo_no和memo_item表memo_no和memo_price表memo_no如果所有memo no 600然后在单个查询中删除这3个表中的所有值。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

首先,如果你想以正确的方式进行,你必须设置foreign key并在两个“table2”和“table3”上设置“级联删除”选项,同时使其成为索引键table1,就像你的情况“memo_no”是列一样,所以当你从表1中删除记录时,将自动删除另外两个设置了外键约束的记录。 第二种可能的方法是使用PDO事务,你可以这样做,

BEGIN TRANSACTION;
DELETE FROM table1 WHERE memo_no = 600;
DELETE FROM table2 WHERE memo_no = 600;
DELETE FROM table3 WHERE memo_no = 600;
COMMIT;

或者你也可以这样做, 注意 : 在PDO中记下以下查询准备并绑定memo_no的值,我已经给你下面的工作示例,

DELETE a.*, b.* ,c.*
    FROM tbl1 a 
    LEFT JOIN tbl2 b 
    ON b.memo_no = a.memo_no 
    LEFT JOIN tbl3 c
    ON c.memo_no =b.memo_no 
    WHERE a.memo_no = 600