ハードディスクメンテナンス ブログ

投稿記事数7,860以上!PC,カメラ,オーディオ,ラジオ,航空,旧ゲームなど

[MySQL] idを詰める(連番を振り直す)方法

      2015年01月12日


数分毎に定期的にログを取得するようなプログラムを書き、DBに格納し始める。

だが、ログが膨大になったのでスリム化したい。

数分毎なので1日に多数のレコードがあるが、内容(atai)を調べると、その中の1つだけで事足りる場合。

<test_db_001>
id,date,time,atai
1,2015-01-01,00:10:00,10
2,2015-01-01,00:20:00,10
3,2015-01-01,00:30:00,10
4,2015-01-02,00:10:00,20
5,2015-01-02,00:20:00,20
6,2015-01-02,00:30:00,20

「その中の1つだけで事足りる」というのは、値は常に変化するが、その動きが小さいため、どれか1つのレコードを抜き出しても問題ないような種のデータである。

まずは年月日(date)でSELECTして抽出する。

SELECT * FROM test_db_001 GROUP BY date ORDER BY id ASC ;

# 但しこの文でSELECTできるのは、dateが2015-01-01であればid(1,2,3)のどれであるかは不明なので、明確にするならそれに適したSELECT文を書くこと。

結果、id(1,4)が選択される。

<test_db_001>
id,date,time,atai
1,2015-01-01,00:10:00,10
4,2015-01-02,00:10:00,20

この状態でexportし、別名(test_db_002)でimportする(copyでも可)。

スポンサーリンク

しかし、これではidに隙間が生じており、使いにくい。

システムがidに依存しない場合、これを詰めてしまおう。

SET @i := 0 ;必須
UPDATE test_db_002 SET id = (@i := @i +1) ;

これで、以下のようにidを詰める(連番の振り直し)ことができる。

<test_db_002>
id,date,time,atai
1,2015-01-01,00:10:00,10
2,2015-01-02,00:10:00,20

ここでAUTO_INCREMENTを変えることを忘れないように。

この場合では、最終のidが2なので、次のid(AUTO_INCREMENT)は3になる。

そして、test_db_002をtest_db_001にリネームして終了。

phpMyAdminが使える環境であれば、簡単な操作で実行可能だ。

exportもimportも画面上部から可能であり、上のSQL文(UPDATE…)も画面上部にある「SQL」で可能。

AUTO_INCREMENTとリネームは、画面上部の「操作」にある。

操作

元の(膨大な)ログが必要であれば、リネームするかexportするなどして保存しておくこと。




sha-bc@336×280

sha-bc@336×280


sha-bc@336×280

sha-bc@336×280

  関連記事

B00IIJI9UI
玄人志向の ビデオカード Geforce GTX750Ti搭載 2GB 補助電源なし GF-GTX750TI-LE2GHD がタイムセールで11,990円!

玄人志向 グラフィックボード NVIDIA GeForce GTX750Ti P …

B00VX82P38
Transcendの SSD 256GB SATA3 6Gb/s TS256GSSD370S 3年保証 がタイムセールで9,350円!

Transcend SSD 256GB 2.5インチ SATA3 6Gb/s M …

B00LO3KR96
WD(Western Digital)の 6TB ハードディスク RED 3年保証 WD60EFRX がタイムセールで24,387円!

WD HDD 内蔵ハードディスク 3.5インチ6TB Red WD60EFRX …

B01DDA6VRE
ASUSTekの NVIDIA GeForce GTX950 ビデオカード 補助電源なし GTX950-2G がタイムセールで18,680円!

ASUSTek社製NVIDIA GeForce GTX950搭載ビデオカード 補 …

Fire TV
[9/26(本日)まで!] Fire TV Stickが実質980円?Fire TVシリーズがクーポンで3,000円OFF!プライム新規者にはクーポン券4,000円プレゼント [アマゾンプライムビデオ]

以前少し書いた、アマゾンプライムビデオが、9月24日から始まった。 関連:[9/ …

B00WMK89S6
シリコンパワー のSSD 120GB SATA3 6Gb/s SP120GBSS3S55S25FR がタイムセールで5,100円!

120GBのSSDが5千円台前半までサガッてきたか… サブ機用に! …

B00VX82P2E
Transcendの SSD 128GB SATA3 6Gb/s TS128GSSD370S 3年保証 がタイムセールで5,650円!

Transcend SSD 128GB 2.5インチ SATA3 6Gb/s M …

Samsung SSD 850 EVO 250GB(B00ZTX3802)
SamsungのSSD 850 EVO,250GB,SD or microSDカード付 MZ-75E250B/CP がタイムセールで9,956円!

Samsung SSD 250GB SDカードもしくはmicroSDカード付 8 …

B00FJRS5OW
WD(Western Digital)の 3TB ハードディスク 7200rpm Black 5年保証 WD3003FZEX がタイムセールで18,621円!

WD HDD 内蔵ハードディスク 3.5インチ3TB Black WD3003F …

B00W6LAL0A
ELECOMの 無線LANルーター 親機 11ac/n/a/g/b 867+300Mbps WRC-F1167ACG がタイムセールで4,650円!

有線LANはGigabit! ELECOM WIFI 無線LANルーター 親機 …