0

我想不通,这里有很多关于堆栈溢出的示例,但是每个示例都存在差异,并且它们都给出了相同的问题。

我有一个包含 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 语法有错误;检查手册...

有谁知道代码有什么问题?我尝试了很多变体,但都没有奏效,这可能很简单。

4

1 回答 1

2

ORDER是 MySQL 中的保留字,你应该在它周围使用反引号,你不需要END CASEjust use END

UPDATE cms_slides SET `order` = 
    CASE `order`
        WHEN 68 THEN 67
        WHEN 69 THEN 68
    END 
WHERE `order` BETWEEN 68 AND 69
于 2012-10-10T17:01:02.457 回答