2016-08-12 58 views
1

我想知道SELECT语句中表达式的执行顺序是否始终从左至右发生。SELECT语句中表达式的执行顺序

SET @a := 0; 

SELECT 
@a AS first, 
@a := @a + 1 AS second, 
@a := @a + 1 AS third, 
@a := @a + 1 AS fourth, 
@a := @a + 1 AS fifth, 
@a := @a + 1 AS sixth; 

是否保证上述查询将始终生成以下输出?

first second third fourth fifth sixth 
    0  1  2  3  4  5 

回答

2

按照MySQL manual

但是,评价涉及用户 变量表达式的顺序是不确定的

所以回答你的问题,是否定的,执行顺序是不保证。

+0

感谢参考Giorgos。可能我的下一个问题将是**为什么评估包含用户变量的表达式的评估顺序未定义?**: -/ –

+0

@AnonymousOne您必须向MySQL开发人员咨询这个问题。但是,你的*实际*问题是什么? –

+0

其实问题是我在一些涉及'mysql'用户变量的应用程序中运行了一些查询。由于涉及用户变量的表达式的评估顺序未定义,所以我太担心这一点。 :( –

0

是,以任何方式存在的执行顺序没有配置,所以你总是得到如下所示的结果。

+0

您能否提供任何链接?我想知道更多/详情。 –

+0

请看Giorgos的回答。 –