1

私は3つの列を持つテーブルを持っています:

  `id` int(11) NOT NULL auto_increment    
  `tm` int NOT NULL    
  `ip` varchar(16) NOT NULL DEFAULT '0.0.0.0'

同じ IP が 1 分以内にログに記録されたかどうかを確認し、それらのエントリを 1 つを残してすべて削除するクエリを実行したいと考えています。

たとえば、次の 2 つの行があります。

id=1 tm=1361886629 ip=192.168.0.1
id=2 tm=1361886630 ip=192.168.0.1

データベースに1つだけ保持したいと思います。

他の多くの重複/部分重複エントリの削除に関する質問を読みましたが、Unix/エポック時間の最後の 2 桁を比較し、それに加えて IP に基づいて 1 つを除くすべてを削除する方法を探しています。

どんな助けでも大歓迎です。

4

1 に答える 1

1

mysqlで使用CASTして、最後の2桁を削除できます

SELECT CAST( tm AS CHAR( 8 ) )

これにより、タイムスタンプから最初の8桁のみが選択され、重複を見つけることができます

最後の2桁だけを知りたい場合

SELECT RIGHT(CAST( tm AS CHAR( 10 ) ), 2)

これにより、各タイムスタンプから下2桁のみが選択されます

于 2013-02-26T17:23:05.460 に答える