Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL根据列的最大值删除行_Mysql_Database_Sql Delete - Fatal编程技术网

MySQL根据列的最大值删除行

MySQL根据列的最大值删除行,mysql,database,sql-delete,Mysql,Database,Sql Delete,我有一个表(“条件”),其中包含一个标题为“日期”的列。我想删除所有不等于当前日期的行(由Date(max(Date))的最大值决定)。。部分表结果: | Date | Time | Observed | Temp | HeatIndex | WindChill | RelHumidity | Wind | 14-06-21 | 19:30 | Scattered Clouds | 85.9 | 91 | N

我有一个表(“条件”),其中包含一个标题为“日期”的列。我想删除所有不等于当前日期的行(由
Date(max(Date))的最大值决定)。
。部分表结果:

| Date     | Time  | Observed                     | Temp | HeatIndex | WindChill | RelHumidity | Wind
| 14-06-21 | 19:30 | Scattered Clouds             | 85.9 | 91        | NA        | 61%         |    2 |
| 14-06-21 | 20:30 | Clear                        | 83.2 | 88        | NA        | 67%         |    3 |
| 14-06-21 | 21:30 | Clear                        | 80.7 | 85        | NA        | 74%         |    5 |
| 14-06-21 | 22:30 | Clear                        | 79.5 | 83        | NA        | 76%         |    4 |
| 14-06-21 | 23:30 | Clear                        | 78.4 | 81        | NA        | 79%         |    4 |
| 14-06-22 | 00:30 | Clear                        | 77.6 | NA        | NA        | 82%         |    3 |
| 14-06-22 | 01:30 | Clear                        | 77.1 | NA        | NA        | 83%         |    3 |
| 14-06-22 | 02:30 | Scattered Clouds             | 77.3 | NA        | NA        | 84%         |    2 |
| 14-06-22 | 03:30 | Clear                        | 77.1 | NA        | NA        | 83%         |    2 |
| 14-06-22 | 04:30 | Clear                        | 76.6 | NA        | NA        | 86%         |    4 |
因此,在执行命令之后,我只想看到以下内容:

| 14-06-22 | 00:30 | Clear                        | 77.6 | NA        | NA        | 82%         |    3 |
| 14-06-22 | 01:30 | Clear                        | 77.1 | NA        | NA        | 83%         |    3 |
| 14-06-22 | 02:30 | Scattered Clouds             | 77.3 | NA        | NA        | 84%         |    2 |
| 14-06-22 | 03:30 | Clear                        | 77.1 | NA        | NA        | 83%         |    2 |
| 14-06-22 | 04:30 | Clear                        | 76.6 | NA        | NA        | 86%         |    4 |
我试过:

DELETE FROM conditions WHERE Date <> MAX(Date);

最后一行始终是当前日期。我考虑过添加ID列并按
DESC
排序,但我希望最后一行是最新的条目。每次插入数据(python)在数据库中,将执行包含
Delete
的脚本。

非常确定您不能使用MAX,原因与您不能在Delete上子查询当前表相同

您可以使用
CURDATE()


DELETE FROM conditions WHERE Date CURDATE();

这方面的标准SQL是:

DELETE
    FROM conditions
    WHERE Date < (select MAX(Date) from conditions)

除非
MAX(date)==CURDATE()
,否则这将不起作用,这并不总是正确的(例如,如果最后一行是昨天创建的)@julienc最后一行将在运行删除之前创建。我假设OP知道这意味着他每天开始时都会有一行。如果这成为问题,发布的链接应该会让他转到一个查询,该查询将清除过去的24小时。是的。在新的一天第一次运行后有一行是可以接受的。这只是为了让DB远离gr欠的太多了。我想从技术上讲,我的应用程序只需要这一行,但是整天回头看是很好的:)再次感谢!
DELETE
    FROM conditions
    WHERE Date < (select MAX(Date) from conditions)
delete c
    from conditions c join
         (select max(date) as maxdate from conditions) x
         on c.date < x.maxdate;