スキップしてメイン コンテンツに移動

投稿

ラベル(MYSQL)が付いた投稿を表示しています

LIMIT and user variable in MysQL

Problem 日本語 ver I want to use this query in PROCEDURE. 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; This query want to substitute 1 for the @user_variable 'th line of columns_name, but this query does not work. A cause is that LIMIT and OFFSET does not user variable. Solution 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; Conclusion, if you want to use user variable with LIMIT or OFFSET, use PREPARE STATMENT. Reference http://techtipshoge.blogspot.com/2011/10/limit.html

secure_file_priv

Introduction sorry, this page is Japanese only.   最近SQLを勉強し始めたので自分のメモ代わりに得た知識を書こうと思います。 OSはwindowsでMYSQL server 5.7を使っています。 LOAD DATA INFILE CSVファイルをLOAD DATA INFILEで取り込おうとしたらエラーが出ました。エラーメッセージではsecure_file_privがどうのこうの...... ではまずsecure_file_privとはなんなのか確認していきます。 secure_file_priv secure_file_privはデフォルトで設定される項目の一つです。 secure_file_privがデフォルトで設定されているときは、その設定されているディレクトリにあるファイルしか読み取れません。 secure_file_privの値の確認は mysql> SELECT @@global.secure_file_priv で確認できます。 windowsの場合はProgramData/MySQL server 5.7/uploadsが指定されているようです。 CSVファイルのIMPORT では実際にuploadsの中にあるcsv fileをimportするcodeは以下です。取り込みたいファイルをselect@@global.secure_file_privで得られたディレクトリに置いておくのを忘れないでください。 C:/ProgramData/MySQL/MySQL server 5.7/Uploads/に入っているfile.csvをdbというデータベースのtabというtableにimportします。 DATA LOAD INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/ file.csv' INTO TABLE db.table selec @@global.secure_file_privで指定されているディレクトリ以外からファイルを取り込む方法は以下に記しておきます。 secure_file_privの変更 secure_file_privを変更したい、