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