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 CASEであり、その周りにバッククォートを使用する必要があり、単に使用する必要はありません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 に答える