Mysql 删除按用户id分组的日期的最新记录

Mysql 删除按用户id分组的日期的最新记录,mysql,Mysql,我有一个包含以下字段的表 id (int), userid (int), date_time(datetime), kw (float) 现在我得做些清理。这意味着删除所有记录,只为每个用户保留一天中的最后一条记录 我真的被困在这里面了,所以任何帮助都将被感激 Thx在MySQL中,您可以在delete中使用join语法。因此,这应该是可行的: delete t1 from table t1 join (select date(date_time) as thedat

我有一个包含以下字段的表

id (int),
userid (int),
date_time(datetime),
kw (float)
现在我得做些清理。这意味着删除所有记录,只为每个用户保留一天中的最后一条记录

我真的被困在这里面了,所以任何帮助都将被感激

Thx

在MySQL中,您可以在delete中使用join语法。因此,这应该是可行的:

delete t1
    from table t1 join
         (select date(date_time) as thedate, max(date_time) as max_date_time
          from table t
          group by date(date_time)
         ) tmax
         on date(t1.date_time) = tmax.thedate and
            t1.date_time < tmax.max_date_time;

FWIW,我会创建一个只包含所需信息的新表。然后只需删除旧表,并根据需要重命名/重新索引新表。