2016-12-01 16 views
-1

my ExistステートメントをmySQLから使用しようとしましたが、#1064という構文エラーがありますが、実際には見つかりませんでした。私のコードがありますしながらON DUPLICATE KEY UPDATEを使用することです、あなたのロジックを実現するMySQLエラー、特にIf Existステートメント

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'テーブルの主キーは何ですか?あなたのロジックが何であるかを説明できるなら、ここでアップセートを使う必要はないでしょう。 –

+0

こんにちは!プライマリキーは "username"です – Kuroko

答えて

-1

一つの方法は、あなたの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が答えたところでは、より効率的な方法があります。

関連する問題