MySQL では、「my_size」のような整数入力パラメータを含むストアド プロシージャを使用する場合、LIMIT 句で変数を使用すると問題が発生する可能性があります。 。」ネイティブ実装はこの機能を直接サポートしません。ただし、この制限を回避する方法はいくつかあります。
MySQL バージョン 5.5.6 より前のバージョンが使用されている場合、またはストアド プロシージャが望ましくない場合は、WHERE を使用したサブクエリを使用します。句と ROWNUM は効果的な解決策として機能します。
SET @limit = 10; SELECT * FROM ( SELECT instances.*, @rownum := @rownum + 1 AS rank FROM instances, (SELECT @rownum := 0) r ) d WHERE rank < @limit;
もう 1 つのアプローチには、文字列連結を使用してクエリを動的に構築し、その結果を変数に代入して、準備されたクエリを実行することが含まれます。
SET @query = 'SELECT * FROM some_table LIMIT ' || my_size; PREPARE stmt FROM @query; EXECUTE stmt;
あるいは、プリペアド ステートメントは、LIMIT などのパラメータを動的 SQL ステートメントに渡す方法を提供します。句。
SET @limit = 10; PREPARE stmt FROM 'SELECT * FROM some_table LIMIT ?'; SET @param = @limit; EXECUTE stmt USING @param;
以上がMySQL の LIMIT 句で変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。