2014-04-20 120 views
0

所以 - 我的代碼有問題。我直接在控制檯中測試它,並得到「語法錯誤」Mysql如果存在,然後

您的SQL語法錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用 附近手冊 'IF EXISTS(SELECT * FROM user_inventory WHERE RESOURCE_ID = '6' 和uid =' 1 ')T' 位於第1行

IF EXISTS(SELECT * FROM user_inventory WHERE resource_id = '6' AND uid ='1') 
THEN UPDATE user_inventory SET resource_count = resource_count+1 WHERE resource_id = 6 AND uid = 1 
ELSE INSERT INTO user_inventory(uid, resource_id, resource_count) VALUES (1, 6, 1); 

我從來沒有使用IF EXISTS子句......所以我不知道我做錯了什麼。

回答

4

SQL IF語句只能在stored program內使用。正如您所嘗試的那樣,您不能在通用SQL上下文中使用它。

不過,你不需要在這裏使用IF

  1. 定義你的user_inventory臺合適的唯一性約束:

    ALTER TABLE user_inventory ADD UNIQUE (uid, resource_id) 
    
  2. 使用INSERT ... ON DUPLICATE KEY UPDATE

    INSERT INTO user_inventory 
        (uid, resource_id, resource_count) 
    VALUES 
        (1, 6, 1) 
    ON DUPLICATE KEY UPDATE 
        resource_count = resource_count + 1 
    
+0

好的。謝謝。這不是我需要做的事情的可行選擇,所以我必須找到另一種方法。 – user3277023

+0

@ user3277023:如果你能解釋爲什麼它「*不是一個可行的選項*」,那麼有人可能會提出一個合適的選擇。 – eggyal