[英]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.