2012-01-03 78 views
0

語句試圖讓這個查詢工作。我在考慮括號問題。MySQL查詢問題與如果選擇

SELECT (fielda - fieldb - ( 
IF ((cola <= 5), 
    1, 
    IF ((cola >= 6 AND cola <= 12), 
     2, 
     IF ((cola >= 13 AND cola <= 20), 
      3, 
      IF ((cola >= 21 AND cola <= 28), 4) 
      ) 
     ) 
    ))) 
AS result FROM the table r WHERE r.fieldx = 3148 AND cola <= 18 ORDER BY result LIMIT 1 

Mysql返回: 您的SQL語法錯誤;檢查對應於你的MySQL服務器版本AS結果使用近「)))))FROM

+0

增加了一些缺口,使得計數的支架更容易有效的語法;目前看起來沒問題。你能發佈錯誤信息嗎? – Nicolas78 2012-01-03 21:17:06

+0

你可能會嘗試離開外面的括號,至少沒有理由讓他們,也許他們甚至造成問題 – Nicolas78 2012-01-03 21:19:39

回答

0

如果我猜(和您所提供的信息去),我會說,正確的語法手冊最後IF()缺少使數學函數失敗的其他條件。

IF ((cola >= 21 AND cola <= 28), 4, ???) 

用「all else failed」/「default」值填充問號,你應該是安全的。不過,我相信MySQL的(假設它是一個非空的字段)如果指定NULL的其他條件將使用默認值類型/列(但我可能是錯的)。