如何从mysql表中删除记录,但跳过有约束错误的记录?

如何从mysql表中删除记录,但跳过有约束错误的记录?,mysql,foreign-keys,sql-delete,Mysql,Foreign Keys,Sql Delete,我尝试删除记录,但获取约束错误和查询停止。或者我使用“delete ignore…”但查询也会停止,只是发出警告。我不能设置约束检查,我只需要删除没有约束的记录。也许mysql有一些用于此的命令?我什么也没找到。将“on delete cascade”添加到表/约束定义中。我能想象的唯一方法是编写一个查询,从主表返回没有详细信息的行,然后将此查询的结果与主表连接,类似于 DELETE FROM table1 t INNER JOIN ( SELECT pk_column FROM tab

我尝试删除记录,但获取约束错误和查询停止。或者我使用“delete ignore…”但查询也会停止,只是发出警告。我不能设置约束检查,我只需要删除没有约束的记录。也许mysql有一些用于此的命令?我什么也没找到。

将“on delete cascade”添加到表/约束定义中。

我能想象的唯一方法是编写一个查询,从主表返回没有详细信息的行,然后将此查询的结果与主表连接,类似于

DELETE FROM table1 t
INNER JOIN 
(
   SELECT pk_column FROM table1 t1
   LEFT JOIN details1 d1 ON (d1.fk_column = t1.pk_column)
   // other LEFT JOIN[s] if you have more detail tables.
   WHERE d1.pk_column IS NULL
)a ON t.pk_column = a.pk_column

join的另一个替代方法是在不存在的地方添加
以检查

他不想删除打破外部约束的记录,只需跳过它们谢谢你的回答。除了加入或外部处理程序(脚本语言),似乎没有其他方法。在我的特殊情况下,连接是不可接受的,因为表中有1.5M条记录,要等待很长时间,所以我使用外部处理程序。