LoginSignup
30
30

More than 3 years have passed since last update.

MySQL かんたんにテーブルのid番号を1からリセットする方法

Last updated at Posted at 2019-11-01

MySQLのid番号 リセット方法

MySQLには初期設定でauto-increment機能が設定されています。
簡単にいうと「自動連番機能」です。

ただ番号間にあるレコードを消すとそのid番号のみが欠番となったまま、無視され、最後の番号から連番されてしまうため、テーブル管理において不都合なことが生じる場合があります。

そこで本記事では

「id番号を1から振りなおす方法」をご紹介いたします。

方法のみ知りたい方は以下のリンクをクリック

方法へジャンプ

状況:

たとえばこんな感じのテーブルがあり、id番号が順番に振られています。

id name
1 ANA
2 DELTA
3 JAL
4 UNITED
5 VANILA
6 PEACH

しかし、いくつかレコード削除などによって欠番が生じると下のような順番になります。

id name
1 ANA
3 JAL
4 UNITED
6 PEACH

上の状態でさらにレコードが追加となると下のような連番となります

7 Sky Mark  
8 Jet star

歯抜になってしまったid:2と5は欠番となったまま。

静的なテーブルでこのid番号を1から振り直す方法がないものか探した結果、なんとかできる方法に行き着いたのでご紹介します。

リセット方法

ターミナル上で

1.mysqlに入る(コピペするときは$は除いてください)

terminal
$ mysql -u root -p 

パスワードは基本的には空のままEnterでOK

2.データベースを選択

mysql
mysql> use データベース名

3.テーブルのidを定義し直す

mysql
mysql> set @n:=0;
mysql> update`テーブル名` set id=@n:=@n+1; 

4.確認

mysql
mysql> select*from テーブル名; 

以上の操作でidの番号を振り直すことができたはずです。

基本的にはレコードが入っているテーブルにて以上の方法を試してみてください。レコード追加のない静的なテーブルでは基本的に以上の方法でOKです。

がしかし、

レコードが追加されるようなテーブルでは、上記リセットをかけても次のid番号は、もともと最後に入っていたレコードの次の番号からになってしまうため、mysqlのauto_increment自体をリセットする必要があります。

方法2

そんな時は以下の2つの方法を状況に応じて試してみてください。

1.レコードがすべて空の状態からリセットしたい

レコードが空であれば、

mysql
ALTER TABLE `テーブル名` auto_increment = 1;

でOK。初めのレコードをid:1で始めると言う意味です。

2.レコードが複数存在する状態で最後のidの次から連番にしたい

本記事上部の連番リセット方法でレコード番号を振り直しをしたあと、

mysql
mysql> select*from テーブル名; 

でid番号を振り直したテーブルを確認し、例えば下のテーブルなら本記事のリセットのみだとレコードを追加した時、真ん中のような連番になってしまいます。
一番右のようにするためにはmysqlのauto_increment(連番機能)の番号を更新する必要があります。

無題の図形描画 (1).png

このテーブルのauto_incrementも修正しよう。

mysql
ALTER TABLE `テーブル名` auto_increment = 開始したいid番号;

つまり今回の場合であれば

ALTER TABLE `テーブル名` auto_increment = 5;

でOK。レコードを追加した際、5,6,7,,,,,と連番になるはずです。

****************************************
プログラミング初級者が自身の備忘録も兼ねて書いた記事ですのでご指摘等ありましたら気軽にコメントください。なにか同様の問題でお困りの方にお役に立てたら嬉しいです。

テーブルのリレーションによっては本記事の番号振り直し自体がエラーになる場合がありますので、テーブル同士のリレーションおよび関係性を確認して記述の修正、一時コメントアウト等適宜行い、実行してください。

30
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
30