問題 English ver 次のようなクエ リーをプロシージャーの中で使いたかった。 SET @user_variable = FLOOR(RAND()*10); INSERT INTO Table_name (columns_name) VALUES (1) FROM Table_name ORDER BY RAND() LIMIT 1 OFFSET @user_variable; これはランダムに行を入れ替えたテーブルの上から@user_variable番目の行のcolumns_nameに1を入れることをしたかった。しかし、うまくいかなかった。その原因はLIMITやOFFSETは後ろにユーザー変数を持ってこれないことにあった。 解決法 次のようにするとうまくいく。 SET @user_variable = FLOOR(RAND()*10); PREPARE SET_STMT FROM 'INSERT INTO Table_name (columns_name) VALUES (1) FROM Table_name ORDER BY RAND() LIMIT 1 OFFSET ?;'; EXECUTE SET_STMT USING @user_variable; 結論、やりたい操作を''で囲って上のようなことを書けばLIMITでもOFFSETでもうまくいく。 Reference http://techtipshoge.blogspot.com/2011/10/limit.html
This blog is my learning memo. I write post about ML, math, programing, other. Please click slidebar icon to look for post by contents. content name of post written by Japanese is written Japanese. content name of post written by English is written English. Please look at my post to enjoy and learn ML.