2013-03-04 10 views
5

Ich möchte ein einfaches Beispiel für eine MySQL-if, sonst, endif-Anweisung.Wie schreibe ich eine MySQL wenn sonst endif Anweisung?

möchte ich so etwas wie dies zu tun (in 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

, indem Sie den Code suchen Ich schlage vor, Sie verwenden können INSERT ON DUPLICATE KEY UPDATE stattdessen –

Antwort

8

MySQL INSERT ON DUPLICATE KEY UPDATE hat, dass Sie, wenn der Wert bereits aktualisieren können existieren oder Einfügen, wenn nicht.

Zuerst müssen Sie für das Einrichten eines UNIQUE Constraint,

ALTER TABLE myTable ADD CONSTRAINT tb_uq UNIQUE (ID) 

, dass es, wenn Sie ID wollen einzigartig sein. (Dies ist nur ein Beispiel)

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

Diese genaue Anweisung funktioniert nicht, es wird nicht eingefügt, wenn es ein Duplikat gibt. Fehlt etwas? –

+0

@EricBanderhide Es ist völlig normal, es aktualisiert nur den aktuellen Datensatz, wenn der Schlüssel bereits vorhanden ist. Was müssen Sie noch tun? –

+0

Es wird in Ordnung eingefügt, wenn der Schlüssel nicht existiert. Aber wenn nicht, dann habe ich den Tisch so eingerichtet, dass er einzigartig ist. Ich habe meine Frage aktualisiert. Könnten Sie sich meine Aussage ansehen? –

4

Die if-Anweisung (in einem gespeicherten Block):

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

Oder das, wenn die Funktion (in-line):

IF(expr1,expr2,expr3) 

, die funktioniert als: IF (Bedingung, was_zu_bei_der_wahr, was_zu_weiche_falschen) Der letzte Teil ist der gleiche wie ein 'else'. Eine if-else-if müssten wie eingebettet werden:

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

die die gleichen wie dies in den meisten Programmiersprachen tun würde:

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