MySQL根据Unix/Epoch时间的后两位删除条目

标签 mysql

我有一个包含三列的表格:

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

我想运行一个查询来检查是否在一分钟内记录了相同的 IP,然后删除其中一个条目以外的所有条目。

例如我有下面两行。

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

我只想在数据库中保留一个。

我已经阅读了很多其他删除重复/部分重复条目的问题,但我正在寻找一种方法来比较 Unix/epoch 时间的最后两位数字,并根据该数字加上 IP 删除除一个以外的所有数字。

非常感谢任何帮助。

最佳答案

您可以在 mysql 中使用 CAST 来删除最后 2 位数字

SELECT CAST( tm AS CHAR( 8 ) )

这将仅从时间戳中选择前 8 位数字,并允许您查找重复项

如果你只想知道最后两位数是多少

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

这将只从每个时间戳中选择最后两位数字

关于MySQL根据Unix/Epoch时间的后两位删除条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15095209/

相关文章:

php - 检索我的基本公告数据库的最新条目

php - 在 MySQL 中,如何选择包含我测试的每个值的结果?

php - 对存储此表单中的数据感到困惑

mysql - 如何获得mysql请求的答案并入库?

2行之间的PHP friend 关系?

php - 从一个表中获取名称与另一个表中的匹配 ID?

php - 类似于 php 中的 facebook 的新闻行情

php - MySQL在插入前删除空格

mysql - #1054 - 'max.ACCESS_DATE_TIME' 中的未知列 'where clause'

用于复制表的 PHP 查询