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

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

  関連記事

B00P9VXAMK
Philipsの 23型液晶モニター AH-IPSパネル FullHD(1920×1080) 5年保証 238C5QHSN/11 がタイムセールで15,500円!

Philips 23型ワイド液晶ディスプレイ (AH-IPSパネル/HDMI端子 …

B017D7HOAQ
ELECOMの 無線LANルーター 親機 11ac/n/a/g/b 867+300Mbps WRC-F1167ACF2 が特選タイムセールで2,980円!

類似機種(WRC-F1167AC系)の比較は以下。 関連:WRC-F1167AC …

B017SMDGAI
Dellの 23.8型 液晶モニター フルHD(1920×1080) ノングレア(非光沢) 3年保証 SE2416H がタイムセールで15,980円!

Dell ディスプレイ モニター SE2416H 23.8インチ/フルHD/IP …

B00KBP4C58
ナカバヤシの OAチェア(丸椅子) ブラック RZR-112BK が特選タイムセールで5,128円!

ナカバヤシ ラウンドOAチェア ブラック RZR-112BK 本日限定、急グェ! …

ReadyNAS OS Version 6.6.0
ReadyNAS104のファームウェアがv6.6.0にアップデート(HDD4台搭載可能なNAS)

NETGEARのNASであるReadyNAS104(RN10400-100AJS …

「ASCII.jp」がアクセス不能
「ASCII.jp」がいまだアクセス不能 – 2015年10月25日(日)19時現在

2015年10月25日(日)19時現在、まだアクセスできませんね… …

B01852Q7Y2
Acer(エイサー)の 23型 液晶モニター フルHD(1920×1080) TN 非光沢 G236HLBbidx がタイムセールで11,659円!

Acer ディスプレイ モニター G236HLBbidx 23インチ/フルHD/ …

B018VK9N9E
NEC Aterm MR04LN LTE対応 モバイルルーター クレードル付属 ビッグローブSIM付 がタイムセールで21,600円!

関連:Aterm MR04LN(NECのモバイルルーター)のアマゾン特売価格の変 …

B00FJVI37C
iiyamaの 27型 液晶モニター ProLite AMVA+パネル フルHD(1920×1080) XB2783HSU-B1 がタイムセールで22,980円!

iiyama Full HD(1920×1080)モード対応 AMVA …

B00TQ8EOM2
ELECOM(エレコム)の Giga対応 スイッチングHUB 5ポート EHC-G05PA-JB-K がタイムセールで2,180円!

ELECOM Giga対応スイッチングHub 5ポート プラスチック筐体 磁石付 …