我无法弄清楚这一点,这里有很多关于堆栈溢出的例子,但每个都存在差异,并且它们都给出了同样的问题。
我有一个80“幻灯片”的列表,其中有一个名为“order”的列。订单是一个数字,目前介于0到79之间。
如果我们删除幻灯片,我们需要调整幻灯片之后的幻灯片,我已经算出了算法。
以下是算法的结果:
UPDATE cms_slides SET order =
CASE order
WHEN 68 THEN 67
WHEN 69 THEN 68
END CASE
WHERE order BETWEEN 68 AND 69
这是当前代码基于Soulmerge的解决方案:Updating display order of multiple MySQL rows in one or very few queries
列“order”实际上位于“cms_slides”中,值1到69都存在于“order”下。
错误消息是典型的:错误:您的SQL语法中有错误;查看手册......
有谁知道代码有什么问题?我尝试了许多变化但没有工作,这可能很简单。
答案 0 :(得分:2)
ORDER
是MySQL中的reserved word你应该使用反引号,你不需要END CASE
只使用END
:
UPDATE cms_slides SET `order` =
CASE `order`
WHEN 68 THEN 67
WHEN 69 THEN 68
END
WHERE `order` BETWEEN 68 AND 69