我一直在試圖根據菜單結構的類別和順序ID重新排序數據庫中的表。MYSQL IF語句按類別重新排序
這是我大致的表結構
menuid menuname order categoryid -------------------------------------- 1 firstitem 1 1 2 seconditem 2 1 3 thirditem 1 2 4 fourthitem 2 2
我已經試過這句法:
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`
我得到這個錯誤:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order = IF(order = `3`, `2`, `3`) WHERE order = `3`' at line 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
什麼是所有的反引號?您不應該使用名稱限定符引用值。它們是數字,它們可以不帶引號或用撇號引用。 – 2012-07-20 13:27:53