mysql - 有没有办法通过使用时间戳进行比较来删除最近的行

标签 mysql sql

运行文件表:

Sample_Id    Created_On
filename.csv 09/25/2017 16:17:33
filename.csv 09/25/2017 16:10:33

我需要删除具有最新时间戳的行。

此查询给出旧记录。

SELECT  min(RunFile.`Created_On`) FROM RunFile WHERE Sample_Id='filename.csv'

我正在尝试类似下面的操作,但它没有按预期工作:

DELETE From RunFile WHERE RunFile.`Created_On` IN (SELECT  min(RunFile.`Created_On`) FROM RunFile WHERE Sample_Id='filename.csv')

谁能帮我解决如何根据时间戳删除旧记录。

最佳答案

您可以在 DELETE 查询中进行排序和限制:

DELETE FROM RunFile WHERE Sample_Id = 'filename.csv' ORDER BY Created_On DESC LIMIT 1

我强烈建议将 Created_On 列更改为格式为“Y-m-d H:i:s”或时间戳的日期时间。在当前的字符串格式中,order by 不会像您预期的那样工作。 10/25/2016 大于 09/25/2017。

关于mysql - 有没有办法通过使用时间戳进行比较来删除最近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46411472/

相关文章:

python - MYSQLdb/Python 值错误但仍得到所需结果

python - 如何使用Scrapy编码

java - 将Java连接到MySQL数据库

php - SQL如何在一个字段中搜索某个部分?

java - 如何在java中正确地从数据库中检索数据

java - 将Java连接到MySQL数据库

mysql - Powershell 使用日期时间数据类型写入 MySQL 表列

sql - SQL中,如何获取某列排序的前N行?

mysql - select * from tablename where id ='' 和 select * from tablename where id is null 之间的区别

sql - SQL定长插入语句格式化程序