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

MySQL query for remove items from database, but keep 1 single row per day

我有一个包含多行的 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 个查询来完成吗?

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

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

子查询 returns 每天的最后一个值,因此每隔一行被删除。 见 demo.
结果:

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