8

我正在寻找一种方法来构建一个比较同一记录的两个属性的查询,而无需先提取记录并比较后查询。我的具体案例可能有 10k 的记录,因此遍历每个记录不是一种选择。

示例:通过查询 .where updated_at == created_at 查找此记录

#<User id: 1, name: "xxx", created_at: "2012-07-01 12:00:00", updated_at: "2012-07-01 12:00:00">

Rails 3+,ActiveRecord,MySQL。

更新:正如评论员 Matzi 指出的那样,使用 sqlite 时以下内容有效,但mysql无效:

User.where("created_at == updated_at")

已解决:简单的错误,ruby vs sql。

Sqlite 可以使用:

User.where("created_at == updated_at")

但 MySQL 要求:

User.where("created_at = updated_at")
4

1 回答 1

8

如果您想以通用方式执行此操作,您应该使用 ARel 来摆脱特定的数据库实现。就像是

users = User.arel_table
User.where(users[:created_at].eq(users[:updated_at]))

会工作

于 2015-09-08T13:47:08.387 回答