MySQL の LIMIT 句でのユーザー変数の使用
MySQL ストアド プロシージャを使用する場合、入力パラメータを使用して動作を制御するのが一般的です。 SELECT ステートメントの LIMIT 句を含む、プロシージャの。ただし、MySQL は LIMIT 句での変数の使用をネイティブにサポートしていません。
この制限を回避するには、いくつかの回避策を使用できます。 1 つのオプションは、計算された行番号で WHERE 句を含む副選択を使用することです。
SET @limit = 10; SELECT * FROM ( SELECT instances.*, @rownum := @rownum + 1 AS rank FROM instances, (SELECT @rownum := 0) r ) d WHERE rank < @limit;
この方法では、ユーザー変数 (@limit) を使用して、必要な制限を指定します。 @rownum を使用して行番号を計算し、その値に基づいてフィルターを適用して LIMIT 句の動作をエミュレートします。
別の回避策には、ストアド プロシージャと動的 SQL の使用が含まれます。
CREATE PROCEDURE proc_name(IN limit INTEGER) BEGIN SET @sql = CONCAT('SELECT * FROM some_table LIMIT ', limit, ';'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; END;
このプロシージャは動的に構築します入力制限に基づいて SQL ステートメントを作成し、実行します。これにより、ユーザー入力に基づいて柔軟な LIMIT 値を使用できるようになります。
以上がストアド プロシージャで MySQL の LIMIT 句を使用してユーザー変数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。