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')
任何人都可以帮我解决如何根据时间戳删除旧记录的问题。
答案 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'