2012-03-24 15 views
5

LIMIT句で負の値を使用するとどうなりますか?否定的な結果が出るのだろうか?MySQL LIMITに負の値を使用するとどうなりますか?

この記事とMySQLフォーラムは、私が思い出したように、suxではドキュメントがありません。

背景: 私はMySQL CE 5.5.20を使用しています。私はint型の引数をとるストアドプロシージャを書いて、それをLIMIT節に使用しました。私が望むならば、私はすべての行を返す方法が必要だったので、ストアプロシージャ/ルーチンのlimitパラメータに-1を渡してみました。

+0

本当に本当に制限句を入れたいのであれば、-1の代わりに非常に大きな整数を使用してみませんか? –

答えて

0

これを他のバージョンのMySQLで使用すると、エラーが発生する可能性があります。

The error in MySQL

3

documentationによれば、LIMIT句は、SELECT文によって返される行の数を制限するために使用することができる

非負整数でなければなりません。 LIMITは、1つまたは2つの数値引数を取ります。これらは両方とも負でない整数定数でなければなりません(プリペアドステートメントを使用する場合を除く)。

ドキュメントに必要なものとパラメータがインラインでない場合、mysqlはエラーをスローするはずですが、文書化されていないバグが発生しているようです。

私の提案は、ストアドプロシージャで構文的に訂正されたSQLを使用することです。あなたはまだすべてを表示するフラグとして負のintを使用することができます。このようなもの

IF myparam >= 0 THEN 
    SELECT * FROM `mytable` LIMIT myparam; 
ELSE 
    SELECT * FROM `mytable`; 
END IF; 
関連する問題