1

selectステートメントで設定した変数を使用できますか?

私はこのようなことをしたいです(明らかに機能していません):

SELECT 
    YEAR(date_of_spend), 
    @current := SUM(spend_amount),
    @half := (SUM(spend_amount) / 2),
    (@current - @half)
FROM `sales_data`
GROUP BY YEAR(date_of_spend)
4

2 に答える 2

1

いいえ。mysqlのマニュアルによると:

原則として、ユーザー変数に値を割り当てたり、同じステートメント内で値を読み取ったりしないでください。期待どおりの結果が得られる可能性がありますが、これは保証されません。ユーザー変数を含む式の評価順序は定義されておらず、特定のステートメント内に含まれる要素に基づいて変わる場合があります。さらに、この順序は、MySQL サーバーのリリース間で同じであるとは限りません。

http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

式をもう一度繰り返すか、サブクエリを使用する必要があります

于 2013-03-27T21:43:33.210 に答える
-1

それらを設定するだけです:

SELECT 
    YEAR(date_of_spend), 
    @current := SUM(spend_amount),
    @half := (SUM(spend_amount) / 2),
    (@current - @half)
FROM `sales_data`,
    (SELECT @current := 0, @half := 0) r
GROUP BY YEAR(date_of_spend)

デモを参照してください

于 2013-03-27T20:57:37.287 に答える