如果值实际存在于sql中,如何有条件地删除行?

如果值实际存在于sql中,如何有条件地删除行?,sql,ruby-on-rails,Sql,Ruby On Rails,我想在rails数据库中运行此命令: ActiveRecord::Base.connection.execute( "delete from data_migrations where version = '2017010417100'" ) 但只有在版本号确实存在的情况下。简而言之,我不确定该版本是否存在,如果存在,我想将其删除。由于我公司的协议,我无法直接访问数据库。我能做什么 我正在尝试运行数据迁移以修复某些记录,但它可能已意外运行。您可以尝试 ActiveRecor

我想在rails数据库中运行此命令:

  ActiveRecord::Base.connection.execute(
      "delete from data_migrations where version = '2017010417100'"
  )
但只有在版本号确实存在的情况下。简而言之,我不确定该版本是否存在,如果存在,我想将其删除。由于我公司的协议,我无法直接访问数据库。我能做什么

我正在尝试运行数据迁移以修复某些记录,但它可能已意外运行。

您可以尝试

ActiveRecord::Base.connection.execute(
  "if exists(select 1 from data_migrations where version = '2017010417100') delete from data_migrations where version = '2017010417100'")

您首先询问是否存在该版本,如果存在,则执行查询

一个SQL
delete
,它的
where
子句与任何行都不匹配,根本不执行任何操作。