1

メニュー構造のカテゴリと注文IDに基づいて、データベース内のテーブルを並べ替えようとしています。

これは私がテーブル構造として大まかに持っているものです

menuid menuname order categoryid
--------------------------------------
1最初のアイテム11
2秒アイテム21
33番目のアイテム12
44番目のアイテム22

私はこの構文を試しました:

UPDATE yourtable SET id=IF(id=2, 3, 2) where id in(2,3)

このような:

UPDATE menu
SET order = IF(order = `3`, `2`, `3`)
WHERE order = `3`

このエラーが発生します:

SQL構文にエラーがあります。あなたに対応するマニュアルを確認してください
 'order = IF(order = `3`、` 2`、 `3`)の近くで使用する正しい構文のMySQLサーバーのバージョン
 WHERE order =`3`'2行目

ソリューションコード:

UPDATE menu
SET `order` = case when `order` = 3 then 2 else 3 end
WHERE `order` = 3 AND section = 2 OR `order` = 2 AND section = 2
4

2 に答える 2

1

試す

UPDATE menu
SET `order` = case when `order` = 3 
                   then 2 
                   else `order` 
              end

ちなみにorderMySQLでは予約語です。あなたはバックティックでそれを逃れる必要があります

于 2012-07-20T13:25:32.477 に答える
1

CASE式を使ってみませんか。あなたのWHEREには意味がありません

UPDATE menu 
SET order = case when order = `3` then `2` else `3` end 
于 2012-07-20T13:26:22.117 に答える