有没有办法通过使用Timestamp比较它来删除最近的行

时间:2017-09-25 18:03:30

标签: mysql sql

RunFile表:

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')

任何人都可以帮我解决如何根据时间戳删除旧记录的问题。

2 个答案:

答案 0 :(得分:2)

您可以在DELETE查询中订购并限制:

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

我强烈建议将Created_On列更改为datetime,其格式为' Y-m-d H:i:s'或时间戳。按当前字符串格式排序,按照您的预期工作。 2016年10月25日大于09/25/2017。

答案 1 :(得分:2)

您可以尝试删除sample_id的值,而不是max(Created_On)

delete from  RunFile
where ( Sample_Id, Created_On ) not in (

  select * from (

  select  Sample_Id, max(Created_On)
  from RunFile
  group by sample_id ) t

) 
and Sample_Id = 'filename.csv'