MySQL查询从数据库中删除项目,但每天保留1行

时间:2019-08-12 09:16:05

标签: mysql sql-delete

我有一个包含多行的mysql数据库。每天晚上,我将删除除每天1行以外的所有行。

例如:

2019-01-01 15:23:24 | 1.5
2019-01-01 13:22:24 | 1.73
2019-01-01 12:26:24 | 1.6
2019-01-02 11:21:25 | 1.25

将是:

2019-01-01 15:23:24 | 1.5
2019-01-02 11:21:25 | 1.25

我可以使用1个查询吗?

1 个答案:

答案 0 :(得分:1)

您可以保留每天的最长日期:

delete from tablename
where date not in (
  select * from (
    select max(date) 
    from tablename
    group by date(date)
  ) g  
);

子查询返回每天的最后一个值,因此每隔一行将被删除。 请参见demo
结果:

| date                | col  |
| ------------------- | ---- |
| 2019-01-01 15:23:24 | 1.5  |
| 2019-01-02 11:21:25 | 1.25 |