【发布时间】:2014-07-18 01:20:02
【问题描述】:
我需要使用 rails 3 中的活动记录查询删除一些重复的行。是的,该表没有主键或其他约束。但不是我的罪。 :) 我不能只执行一些查询,例如从“TableWhatever”中删除,因为一行是正确的,不是两行,也不是三行。所以我尝试执行类似的操作:
Domain.delete(Domain.where(domain: 123).limit(1))
而mysql给出以下错误:
ActiveRecord::StatementInvalid: Mysql2::Error: 这个版本的 MySQL 还不支持 'LIMIT & IN/ALL/ANY/SOME subquery': DELETE FROM domain WHERE domain.id_domain IN (SELECT @987654324 @.id_domain FROM domain WHERE domain.id_domain = 123 限制 1)
【问题讨论】:
-
为什么这么复杂?为什么不删除没有子选择?我不知道 ruby,但它可能是这样的:
Domain.delete.where(domain: 123).limit(1),在普通 SQL 中:DELETE FROM domain WHERE id_domain = 123 LIMIT 1。 -
在 Rails 中将是 Domain.delete.where(123).limit(1) ,但不像你想的那样工作。是的,在 sql 中很简单,但需要使用 rails 来做到这一点。
标签: mysql ruby-on-rails activerecord