gpt4 book ai didi

mysql - 为什么涉及用户变量的表达式的求值顺序未定义?

转载 作者:行者123 更新时间:2023-11-29 20:33:18 25 4
gpt4 key购买 nike

来自MySQL Manual以下查询的输出不保证始终相同。

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

引用手册:

However,the order of evaluation for expressions involving user variables is undefined;

我想知道背后的故事。

所以我的问题是:为什么涉及用户变量的表达式的求值顺序未定义?

最佳答案

select 中表达式的求值顺序未定义。大多数情况下,您只有在有变量时才会注意到这一点,因为错误会导致错误的信息。

为什么? SQL 标准不要求计算的顺序,因此每个数据库可以自由决定如何计算表达式。通常,此类决定留给优化器。

关于mysql - 为什么涉及用户变量的表达式的求值顺序未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38923660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com