首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL查询赋值错误

MySQL查询赋值错误
EN

Stack Overflow用户
提问于 2015-10-08 11:34:43
回答 1查看 26关注 0票数 2

当我跟着查询

代码语言:javascript
复制
Select
case
        when (@nume=Start_Date)  then  null        
        when (@nume!=Start_Date) then @num
End,
case
        when (@nume=Start_Date and @nume:=End_Date)  then  null 
        when (@nume!=Start_Date) then @nume
End,
case
        when (@nume!=Start_Date and @nume:=End_Date and @num:=Start_Date)  then  @nume 
End
from P,(Select @num:=(Select Start_Date from P order by Start_Date desc Limit 1),@nume:=(Select End_Date from P order by Start_Date desc Limit 1 )) as A
;

在下一个回合中,它将整数1的值分配给@nume,而不是按预期的日期分配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 11:41:59

“这是应该的”。嗯,文档明确声明:

作为一般规则,除了SET语句之外,您不应该将值赋值给用户变量并在同一语句中读取该值。例如,要增加一个变量,这是可以的: 设置为a= @a + 1; 对于其他语句(如SELECT ),您可能会得到预期的结果,但这并不一定。在下面的语句中,您可能认为MySQL将首先计算@a,然后再执行赋值: 选择@a,@a:=@a+1,. 但是,涉及用户变量的表达式的计算顺序还没有定义。

您对代码应该做什么的解释与文档有直接的矛盾。我建议你再问一个问题,描述你想要解决的问题,包括样本数据和期望的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33014589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档