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

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

Barbara Streisand
リリース: 2024-12-02 13:01:11
オリジナル
925 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート