sql >> データベース >  >> RDS >> Mysql

select内で変数を定義し、同じselect内で使用します

    MySQL ドキュメント これについては非常に明確です:

    原則として、ユーザー変数に値を割り当てたり、同じステートメント内で値を読み取ったりしないでください。期待どおりの結果が得られる場合がありますが、これは保証されていません。ユーザー変数を含む式の評価の順序は未定義であり、特定のステートメントに含まれる要素に基づいて変更される可能性があります。さらに、この順序は、MySQLサーバーのリリース間で同じであるとは限りません。 SELECT @a、@ a: [email protected] +1、...、MySQLが最初に@aを評価し、次に割り当てを実行すると考えるかもしれません。ただし、ステートメントを変更すると(たとえば、aGROUP BY、HAVING、またはORDER BY句を追加することにより)、MySQLが評価の順序が異なる実行プランを選択する可能性があります。

    サブクエリを使用して、やりたいことができます:

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


    1. 初心者向けSQLAVG()

    2. SQL Server(T-SQL)でデータベースの照合を表示する方法

    3. PostgreSQLを使用してデータベースを切り替える方法

    4. CURDATE()の例– MySQL