2016-08-15 12 views
0

私はRailsのコードからこのクエリがあります。このActiveRecordクエリをMySQLに書き換える方法は?

cars = Car.where('cars.status = 0 AND cars.new = 0') 
cars.each do |car| 
    SharedCar.create(car_id: car.id, owner_id: OWNER_ID) 
end 

を、私は、MySQLのコンソールに直接このクエリを実行する必要があります。上のActiveRecordと同じことをするMySQLを作成するには?

EDIT:明らかに、最初のクエリと2番目のクエリを組み合わせる方法は、MySQLでの拳クエリのロード方法ではありません。

ありがとうございます。 to_sql方法で

答えて

3

Car.where('cars.status = 0 AND cars.new = 0').to_sql 
# => SELECT * FROM cars WHERE status = 0 AND new = 0; 

結果を挿入クエリは

INSERT shared_cars (car_id, owner_id) 
    SELECT cars.car_id, <owner_id> 
    FROM cars WHERE cars.status = 0 AND cars.new = 0 
+0

to_sqlを使用すると、to_sqlを使用してcreateメソッドをsqlにも変換します。 – Vangel

0
SELECT * FROM cars WHERE status = 0 AND new = 0; 
0

が、私は任意のルビーなしSQLでこのような何かを書くと次のようになりますため、最大

INSERT INTO shared_cars (car_id, owner_id) 
    SELECT DISTINCT id, <owner_id> FROM cars WHERE status = 0 AND new = 0; 
関連する問題