如何从两个表中删除行?

时间:2015-10-27 08:44:35

标签: sql

我有table1table2。我需要从table1中删除所有行。当我尝试DELETE FROM table1时出现此错误

  

1451 - 无法删除或更新父行:外键约束   失败(db_name.table2,CONSTRAINT table2_ibfk_4 FOREIGN KEY   (table1_id)REFERENCES table1(id))

如何删除table1中的所有行,以及table1_ididtable1匹配的表2中的所有行?

3 个答案:

答案 0 :(得分:1)

DELETE FROM table2 WHERE EXISTS
(
    SELECT 1 FROM table1 WHERE table1.id = table2.table1_id
);
DELETE FROM table1;

答案 1 :(得分:1)

您的错误表示存在从table2table1的外键引用的问题。要解决此问题,您可以选择以下几种方法:

  • 删除table1table2记录的记录,然后删除table1中的记录
  • ON DELETE CASCADE添加到外键

答案 2 :(得分:0)

首先删除table2然后删除table1

或删除前添加:

SET FOREIGN_KEY_CHECKS=0;

然后删除完成后:

SET FOREIGN_KEY_CHECKS=1;