MySQL子查询中的用户变量

时间:2011-12-16 15:47:28

标签: mysql database

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。

1 个答案:

答案 0 :(得分:2)

因为在此FROM (SELECT @foo AS foo)之前评估了此@foo := 1。基本上,在SELECT之前将评估FROM中的任何内容。

它实际上应该为null但我猜你已经在其他地方为你的会话变量赋值为零。