でSQL変数を使用して:レール私はこのクエリを持ってfind_by_sql
SET @current_group = NULL;
SET @current_count = 0;
SELECT user_id, MIN(created_at) as created_at, CASE WHEN @current_group = user_id THEN @current_count WHEN @current_group := user_id THEN @current_count := @current_count + 1 END AS c
FROM notifies
G ROUP BY user_id, c
ORDER BY id desc LIMIT 0 , 10
私はそれを起動した場合、それは
に動作しますが、私は好きでfind_by_sql方法でそれを置く場合:
Notify.find_by_sql("SET @current_group = NULL; SET @current_count = 0; SELECT user_id, MIN(created_at) as created_at, CASE WHEN @current_group = user_id THEN @current_count WHEN @current_group := user_id THEN @current_count := @current_count + 1 END AS c FROM notifies GROUP BY user_id, c ORDER BY id desc LIMIT 0 , 10")
それこのエラーを返します。
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @current_count = 0; SELECT user_id, MIN(created_at) as created_at, CASE WH' at line 1:
どうすればいいですか?
Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]
だからではなく、括弧を使用しての配列にそれを置くしようとする場合があります:それはこの構文であるAPIによって
おかげ
私はこのようなことを見たことがありません。これは適切なMySQLクエリか別の方言ですか? – Wukerplank