MySQL で、たとえばログインのフィールドがある場合、SQL コマンド内でそのフィールドを 1 ずつ更新するにはどうすればよいでしょうか?
firstName、lastName、および logins を作成する INSERT クエリを作成しようとしています。ただし、firstName と lastName の組み合わせがすでに存在する場合は、logins を 1 増やします。
表は次のようになります。
firstName----|----lastName----|----logins
John Jones 1
Steve Smith 3
私が求めているのは、実行時に新しい人物 (つまり Tom Rogers) を挿入するか、使用された名前が John Jones の場合はログイン数を増やすコマンドです。
ベストアンサー1
エントリの更新:
単純な増分で問題は解決するはずです。
UPDATE mytable
SET logins = logins + 1
WHERE id = 12
新しい行を挿入するか、すでに存在する場合は更新します。
既存の行を更新したい場合、またはまだ存在しない行を挿入したい場合は、REPLACE
構文またはINSERT...ON DUPLICATE KEY UPDATE
オプション(ロブ・ヴァン・ダム実証された彼の答え)。
新しいエントリを挿入する:
あるいは、次のようなものを探しているかもしれませんINSERT...MAX(logins)+1
? 基本的には、次のようなクエリを実行します。ただし、特定のニーズに応じて、もう少し複雑になる場合があります。
INSERT into mytable (logins)
SELECT max(logins) + 1
FROM mytable