2013-03-04 22 views
5

Basitçe bir MySQL örneğidir, başka bir deyişle, endif ifadesi.Başka bir endif ifadesi varsa MySQL nasıl yazılır?

I (Java) Böyle bir şey yapmak istiyorum:

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

Ben önerebilirsiniz Kodunuzdaki bakarak kullandığınız INSERT ON Bir if-else-if gerekir gibi gömülmesine DUPLICATE ANAHTAR GÜNCELLEME yerine –

cevap

8

MySQL değer zaten var olup olmadığına yerleştirin eğer güncellemesini sağlayan INSERT ON DUPLICATE KEY UPDATE sahiptir.

Önce, kurulum bir UNIQUE Kısıtlama Sizin benzersiz olmak ID istiyorsanız bu kadar

ALTER TABLE myTable ADD CONSTRAINT tb_uq UNIQUE (ID) 

gerekir. (Bu sadece bir örnek olan)

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

Bu tam bir deyim çalışmıyor, yinelenen varsa ekleme değil. Eksik bir şey mi var? –

+0

@EricBanderhide Tamamen normaldir, anahtar zaten mevcutsa geçerli kaydı günceller. Başka ne yapman gerekiyor? –

+0

Anahtar yoksa, ince ekler. Ama yapmazsa masayı benzersiz kıldım. Sorumu güncelledim, ifademe bir göz atabilir misiniz? –

4

if (saklı bir blok) deyimi:

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

Ya da fonksiyonu (in-line):

IF(expr1,expr2,expr3) 

aşağıdaki gibi çalışır: IF (koşul, what_to_do_if_true, what_to_do_if_false) Son bölüm, 'else' ile aynıdır. En programlama dillerinde bu aynı yapacağını

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

:

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