8

最初にレコードを取得してクエリ後に比較することなく、同じレコードの 2 つの属性を比較するクエリを作成する方法を探しています。私の特定のケースでは、潜在的に 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 と 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 に答える