27

このようなことをする可能性はありますか?

SELECT 
    @z:=SUM(item),
    2*@z
FROM
    TableA;

2 列目は常に NULL になります。奇妙なことは、次のようなことをしながら

SELECT 
    @z:=someProcedure(item),
    2*@z
FROM
    TableA;

すべてが期待どおりに機能します。なんで?

4

4 に答える 4

3

mysql 5.5 で動作します

select @code:=sum(2), 2*@code

+---------------+---------+
| @code:=sum(2) | 2*@code |
+---------------+---------+
|             2 |       4 |
+---------------+---------+
于 2014-07-03T10:33:35.540 に答える
1
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と、追加の計算の前に確実に実行されると思います。ifsum

于 2015-04-17T09:21:48.487 に答える