2013-03-04 150 views
5

我想要一個MySQL if,else,endif語句的簡單示例。如何編寫一個MySQL if if else endif語句?

我想要做這樣的事情(在Java中):

SELECT COUNT(*) FROM `table` WHERE `userID` = 1 

if(count == 0){ 
    INSERT INTO `table` (`userID`,`A` ,`B`)VALUES ('1', '323', '232') 
} 
else{ 
    UPDATE `table` SET `A` = '323', `B` = '232' WHERE `userID` =1 
} 
+2

您使用INSERT ON DUPLICATE KEY UPDATE改爲 – 2013-03-04 02:46:48

回答

8

MySQL有INSERT ON DUPLICATE KEY UPDATE,讓您如果該值已經存在,或者如果沒有插入更新。

首先,你需要安裝一個UNIQUE約束,

ALTER TABLE myTable ADD CONSTRAINT tb_uq UNIQUE (ID) 

,如果你想ID是獨一無二僅此而已。 (這僅僅是一個例子

INSERT INTO tableName(userID, A, B) 
VALUES (1, 323, 232) 
ON DUPLICATE KEY 
UPDATE A = 323, 
     B = 232 
+0

確切的語句不起作用,如果有重複,則不插入。有什麼遺漏嗎? – 2013-03-04 03:17:03

+0

@EricBanderhide這是完全正常的,它只會更新當前記錄,如果密鑰已經存在。你還需要做什麼? – 2013-03-04 03:18:54

+0

如果密鑰不存在,它會插入正確。但如果是這樣的話,我已經把桌子設置成獨一無二的了。我已經更新了我的問題,你能看看我的發言嗎? – 2013-03-04 03:21:32

4

if語句(在存儲塊):

IF search_condition THEN statement_list 
    [ELSEIF search_condition THEN statement_list] ... 
    [ELSE statement_list] 
END IF 

或者,如果函數(在線):

IF(expr1,expr2,expr3) 

它的工作原理是: IF(condition,what_to_if_true,what_to_do_if_false) 最後一部分與'else'相同。一個的if-else-如果需要嵌入,如:

SELECT IF(id==1, "1", IF(ID==2, "2", "Neither"); 

哪會做同樣的,因爲這在大多數編程語言:通過看你的代碼,我可以建議

if(id == 1) { 
    print "1" 
} elsif(id == 2) { 
    print "2" 
} else { 
    print "Neither" 
}