-1

単一のクエリで次のデータを更新することは可能ですか?

ID             Seq
2               2
1               4
4               1
3               3 

Railsのアクティブレコードで実行できれば最高ですが、SQLクエリでもまったく問題ありません。

そうする理由は、ajax リクエストに基づいて ID のグループを頻繁に更新する必要があるシナリオがあるためです。単一のクエリで実行する方がはるかに最適化されていると思います。

4

3 に答える 3

0

ここここから私が望む解決策を見つけました。

これは私がアクティブなレコードでそれを行う方法です。

_params = ["12", "9", "13", "14", "15", "16"]
db = ActiveRecord::Base.connection();

query = "UPDATE #{self.table_name} SET display_order = CASE id "       
_params.each_with_index do |d,i|
  query += sanitize_sql(["WHEN ? THEN ? ",d,i])
end

query += "END "
query += "WHERE id in ('#{_params.join("','")}') "
于 2012-08-10T03:23:51.843 に答える
0

Active Record を使用して、単一のクエリで複数の更新を直接呼び出すことはできません。あなたが言ったように、レールでSQLクエリとして実行できます。

sql = ActiveRecord::Base.connection();

sql.execute("INSERT into products (id,name,description) VALUES (id-1,'name4','desc4'),(id-2,'name5','desc5'),(id-3,'name6','desc7') ON DUPLICATE KEY UPDATE name=VALUES(name),description=VALUES(description);")
于 2012-08-09T08:25:56.673 に答える