このようなことをする可能性はありますか?
SELECT
@z:=SUM(item),
2*@z
FROM
TableA;
2 列目は常に NULL になります。奇妙なことは、次のようなことをしながら
SELECT
@z:=someProcedure(item),
2*@z
FROM
TableA;
すべてが期待どおりに機能します。なんで?
このようなことをする可能性はありますか?
SELECT
@z:=SUM(item),
2*@z
FROM
TableA;
2 列目は常に NULL になります。奇妙なことは、次のようなことをしながら
SELECT
@z:=someProcedure(item),
2*@z
FROM
TableA;
すべてが期待どおりに機能します。なんで?
mysql 5.5 で動作します
select @code:=sum(2), 2*@code
+---------------+---------+
| @code:=sum(2) | 2*@code |
+---------------+---------+
| 2 | 4 |
+---------------+---------+
mysql> select @z := sum(5), if(@z := sum(5), 2*@z, 0) ;
+--------------+------------------------------+
| @z := sum(5) | if(@z := sum(5), 2*@z, null) |
+--------------+------------------------------+
| 5 | 10 |
+--------------+------------------------------+
をステートメントにラップする2*@z
と、追加の計算の前に確実に実行されると思います。if
sum