Query Output:
>
SELECT
@foo := 1,
@foo,
(SELECT @foo),
(SELECT foo FROM (SELECT @foo AS foo) subselect)
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
| @foo := 1 | @foo | (SELECT @foo) | (SELECT foo FROM (SELECT @foo AS foo) subselect) |
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
| 1 | 1 | 1 | 0 |
+ -------------- + --------- + ------------------ + ----------------------------------------------------- +
1 rows
嗯......我只是想知道为什么第四列值为0而不是1。
答案 0 :(得分:2)
因为在此FROM (SELECT @foo AS foo)
之前评估了此@foo := 1
。基本上,在SELECT之前将评估FROM中的任何内容。
它实际上应该为null但我猜你已经在其他地方为你的会话变量赋值为零。