ホームページ >データベース >mysql チュートリアル >MySQL の LIMIT 句で変数を使用するにはどうすればよいですか?

MySQL の LIMIT 句で変数を使用するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 17:45:12186ブラウズ

How Can I Use Variables with MySQL's LIMIT Clause?

MySQL の LIMIT 句で変数を使用する方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。