2014-03-01 63 views
-2

早上好,我試圖在遍歷樹中上下移動節點,但問題是,如果我有移動節點的查詢,它會在sql語法中引發錯誤,請問,你有什麼想法,問題在哪裏?Mysql查詢是否語句,更新錯誤

UPDATE categories 
SET lft = IF(lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1)), 
    rgt = IF(lft >= 17 AND rgt <= 18, rgt + 1, IF(lft >= 15 AND rgt <= 16, rgt - 1)) 
WHERE (rgt <= 18 AND lft >= 15) 

謝謝你的答案和解決方案!

編輯: 謝謝你的幫助,它的工作原理除了一個問題 - 第二個條件。它沒有用正確的值做任何事情: 父rgt仍然是相同的,移動元素的rgt設置爲0. 哪裏可能會出現問題? 所以問題解決了。我的faul。我正在比較編輯過的值,以至於錯了。

回答

2

您已經在內部錯過第三個參數IF()

試試這個

UPDATE categories 
    SET lft = IF(lft >= 17 AND rgt <= 18, lft + 1, IF(lft >= 15 AND rgt <= 16, lft - 1,0)), 
     rgt = IF(lft >= 17 AND rgt <= 18, rgt + 1, IF(lft >= 15 AND rgt <= 16, rgt - 1,0)) 
    WHERE (rgt <= 18 AND lft >= 15) 

您可以用任何東西代替0

2

你缺少在內IF()函數調用的第三個參數,如

IF(lft >= 15 AND rgt <= 16, lft - 1) 
         ^  ^^^^ 

它應該是:

IF(lft >= 15 AND rgt <= 16, lft - 1, else_stmt_expre) 
            ^^^^^ missing 
+0

@JanKožušník將'else_stmt_expre'替換爲0 –