ホームページ >データベース >mysql チュートリアル >単一の MySQL SELECT ステートメントでユーザー定義変数を使用できますか?

単一の MySQL SELECT ステートメントでユーザー定義変数を使用できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-02 13:01:11930ブラウズ

Can I Use a User-Defined Variable in a Single MySQL SELECT Statement?

SELECT 内で変数を定義して同じステートメント内で使用できますか?

同じ SELECT ステートメントがよく質問されます。次の例を考えてみましょう:

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;

このようなシナリオでは、2 番目の列は常に NULL を返します。これは、ストアド プロシージャを使用した同様の操作が期待どおりに機能するため、独特です。

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;

説明

MySQL ドキュメントには、ユーザー変数に値を割り当てると明示的に記載されています。同じステートメント内でそれを読み取ることは信頼できません。ユーザー変数の評価順序は未定義で、ステートメント要素と MySQL Server のバージョンによって異なる場合があります。したがって、期待される結果は保証できません。

解決策

望ましい結果を達成するには、サブクエリを使用できます。

select @z, @z*2
from (SELECT @z:=sum(item)
      FROM TableA
     ) t;

以上が単一の MySQL SELECT ステートメントでユーザー定義変数を使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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