[MySQL] 連番をINSERTと同時に挿入する方法
1 min read
連番を挿入する場合、色々な方法があるかと思いますが、AUTO_INCREMENT
なんかだと欠番が出来ちゃうし…
MAX 関数で取得した最大値+1 を INSERT 時に一緒に挿入して…だと
同時アクセスされた時にうまく値をもってこれなかったりするし、
それに 2 回 SQL を発行しないといけないし…
…一発でスマートにやりたいものです。
それを実現してくれるのが
SELECT COALESCE(MAX(連番を入れるカラム)+1,1)
です。
コイツを INSERT 文に入れてやります。
INSERT INTO テーブル名(連番を入れるカラム, 他のカラム...)
SELECT COALESCE(MAX(連番を入れるカラム)+1,1), ?, ?
FROM テーブル名;
もしくは
INSERT INTO テーブル名 (連番を入れるカラム, 他のカラム...)
VALUES ((SELECT COALESCE(MAX(連番を入れるカラム)+1,1) FROM テーブル名), 他の値...)
これで好きな値と一緒に連番が振れるようになります。