SQL:删除具有无效外键的记录

标签 sql ruby-on-rails

我刚刚在我的 Rails 应用程序中发现了一个错误,该错误会导致某些记录不会与其关联的对象一起被删除。该错误已修复,但我的数据库中现在有数千条记录,其中外键值指向不存在的记录。

是否可以删除表中的所有记录,其中整数外键引用 SQL 中不存在的另一个表中的记录?如何?

最佳答案

delete from child_table where not exists 
   (select 1 from parent_table where parent_table.id=child_table.related_id)

下一步当然是立即创建一个 FOREIGN KEY 约束(除非你在 MySQL MyISAM 上,在这种情况下你不走运)。

关于SQL:删除具有无效外键的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652436/

相关文章:

sql - SQL中交集的补充

sql - Pgsql删除某些列(不是全部)重复的行

mysql - 如何动态比较连接表与源

ruby-on-rails - 用于查询 Web 资源的永久守护进程

ruby-on-rails - 注册用户时未定义局部变量或方法 `unconfirmed_email'?

ruby-on-rails - 在 rails/ruby 中创建 pdf 发票

java - 字段 'user_id' 没有默认值,但设置为 auto_increment

mysql - 计算表中元素的数量或获取最后一条记录哪个更快?

sql - 解读 Oracle 查询计划中的 HASH JOIN

ruby-on-rails - 基于虚拟主机的 Rails 路由(Host HTTP header)