2013-03-04 23 views
5

私はMySQLのif、else、endif文の簡単な例を望みます。if else ifif文をMySQLに書き込む方法は?

は、私は(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

あなたのコードを見て、私はあなたがON INSERT使用することをお勧めすることができますDUPLICATE KEY UPDATE代わりに –

答えて

8

MySQLは値が既に存在するかどう挿入した場合は、更新することができますINSERT ON DUPLICATE KEY UPDATEを持っています。

まず、あなたはセットアップにあなたはIDが一意になりたい場合は、それだUNIQUE制約、

ALTER TABLE myTable ADD CONSTRAINT tb_uq UNIQUE (ID) 

を必要としています。 (これはほんの一例ある)

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

その正確なステートメントは機能していません。重複がある場合は挿入しません。何か不足していますか? –

+0

@EricBanderhideこれは全く正常です。キーがすでに存在する場合は、現在のレコードを更新します。他に何が必要ですか? –

+0

キーが存在しない場合は正しく挿入されます。しかし、そうでない場合は、テーブルをユニークに設定しました。私は私の声明を見てもらえますか? –

4

ザif文(格納されたブロックで):

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

場合や関数(インライン):

IF(expr1,expr2,expr3) 

は次のように動作します。 IF(条件、what_to_do_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" 
} 
関連する問題