2016-12-01 50 views
-1

我試着從mySQL中使用If Exists語句,但我從mysql中得到一個錯誤,說有一個#1064語法錯誤,但我真的找不到它。有我的代碼:MySQL錯誤,特別是一個如果存在的話

If EXISTS (select * from points where username= 'john') 
update points set points = "4" where username='john' 
ELSE 
insert into points (username, points) values ('john', 5); 
+0

'points'表的主鍵是什麼?如果你能解釋你的邏輯是什麼,你可能不需要在這裏使用upsert。 –

+0

嗨!主要關鍵是「用戶名」 – Kuroko

回答

-1

一體,實現你的邏輯是使用ON DUPLICATE KEY UPDATE,而這樣做的方式你INSERT

INSERT INTO points (username, points) 
VALUES ('john', 5) 
ON DUPLICATE KEY UPDATE points=4 

這個查詢將插入('john', 5')到表中,但如果主鍵的用戶名john已經存在,那麼它將指向4.

+0

認真......誰在低估這個答案而不留任何反饋?這完成了什麼? –

0

您的語句中有語法錯誤。在EXISTS後面缺少「THEN」關鍵字,最後是「END IF」,並且在UPDATE語句中缺少分號。如果你還想去這個說法,應該是這樣的:

IF EXISTS (select * from points where username= 'john') THEN 
    UPDATE points set points = "4" where username = 'john'; 
ELSE 
    INSERT into points (username, points) values ('john', 5); 
END IF; 

請大家注意,此語句可以在常規的如存儲過程或存儲函數,而不是在正常的SQL只能使用。

另一方面,@TimBiegeleisen在他的回答中說的是更有效的方法。

相關問題