selectステートメント
内で変数を定義して使用すると、ユーザー変数に値を割り当てて同じ選択ステートメント内で使用することは推奨されません。 MySQLのドキュメントは、そのような表現の評価の順序は未定義であり、ステートメント要素とサーバーリリースに基づいて異なる場合があることを明示的に述べています。 @Z:= sum(item)、 2*@z から Tablea;
このクエリでは、2番目の列が@Zの値に2を掛けて返すと予想されます。ただし、MySQLは、評価順序が保証されていないため、nullを返す場合があります。この動作は、以下に示すように、ユーザー変数の代わりにストアドプロシージャを使用することとは異なります。 @Z:= someprocedure(item)、 2*@z から tablea;
SELECT @z:=SUM(item), 2*@z FROM TableA;
このアプローチにより、可変割り当てが外部クエリで使用される前に発生することを保証します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3