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

投稿記事数<8,100>以上!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

  関連記事

B015WCN1HO
NEC Aterm MR04LN LTE対応 モバイルルーター ビッグローブSIM付 がタイムセールで19,872円!

ビッグローブのSIMがセットになっているが、契約する義務はなく、モバイルルーター …

B016CWSS0I
TOSHIBA(東芝)の 2TB ハードディスク DT01ACA200/AFP がタイムセールで8,254円!

【Amazon.co.jp限定】 TOSHIBA 2TB 3.5inch/SAT …

PSP,ミニUSB充電ケーブル
100円ショップのPSP,ミニUSB充電ケーブル [GV-VCBOX,GV-SDREC]

100円ショップで売られていた、PSP,ミニUSB充電ケーブル。 PSPの充電口 …

B01C2JRYTQ
LGの 21.5型 液晶モニター フルHD IPS 非光沢 22MP48HQ-P がタイムセールで11,980円!

LG 22MP48HQ-P ディスプレイ・モニター 21.5インチ/IPS(非光 …

B00CDCFBD4
logicoolの 充電式ゲーミングマウス G700s がタイムセールで7,166円!

LOGICOOL 充電式ゲーミングマウス G700s 限定数は70台。 急グェ! …

B01GGV1AHS
Acer(エイサー)の 24型 ゲーミング液晶モニター フルHD(1920×1080) TN 非光沢 1ms KG240bmiix がタイムセールで13,980円!

Acer ディスプレイ モニター KG240bmiix 24インチ/フルHD/ノ …

B012QX3YNI
Dellの 21.5型液晶モニター フルHD(1920×1080) IPS光沢液晶 スピーカ内蔵 3年保証 S2216H がタイムセールで13,980円!

グレア(光沢)派のアナタに! Dell 21.5型 ワイド液晶モニタ 3年保証 …

B0123BQPW0
SanDisk(サンディスク)の SDXCカード Extreme PRO 256GB UHS-I Class10 95MB/秒 SDSDXPA-256G-EPK2 がタイムセールで36,580円!

SanDisk Extreme PRO SDXCカード UHS-I Class1 …

B01COX45DI
Seagate(シーゲイト)の 1TB 2.5インチ SSHD(ハイブリッド) ST1000LX001 がタイムセールで11,980円!

Seagate シーゲイト 内蔵ハードディスク Laptop SSHD (ハイブ …

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

サブ機用に! SP シリコンパワー SSD 120GB SATA3 6Gb/s …