繁体   English   中英

我的UPDATE CASE查询出了什么问题?

[英]What's wrong with my UPDATE CASE query?

我的Mysql是mysql Ver 14.14 Distrib 5.1.69, for redhat-linux-gnu (x86_64) using readline 5.1 ,我有很多UPDATE,例如

update player set playorder = 1 where id = 4;
update player set playorder = 2 where id = 5;
update player set playorder = 3 where id = 1;
....

我将它们合并为一个更新

update player set playorder = (CASE
 when id = 4 then 1 
 when id = 5 then 2 
 when id = 1 then 3 END);

我发现id = 5播放顺序为1,我不知道出了什么问题。 谢谢你的帮助。

我的问题的第一句话是包装盒上有关MySQL的哪个版本。 因此,最好在SQL fiddle上进行所有实验都在5.1.xx版上进行。 当我在机器上将MySQL更新到5.5.xx时,奇怪的结果消失了。 所以我认为是导致UPDATE CASE语句失败的错误。我无法在站点SQL提琴上的5.1.xx版本上构建架构,希望有人能做到这一点。

根据MySQL控制流功能

第一个版本返回结果,其中value=compare_value 第二个版本返回第一个条件为true的结果。 如果没有匹配的结果值,则返回ELSE之后的结果;如果没有ELSE部分,则返回NULL

尝试这个

 Update player 
   Set playorder = Case When id = 4 Then 1 
                        When id = 5 Then 2 
                        When id = 1 Then 3 
                   Else Null 
                   END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM