1

您认为这样的查询会在执行我的软件时产生问题吗?我需要删除所有表,除了最后 2 组条目,按插入的同一时间分组。

delete from tableA WHERE time not in
                (
                  SELECT time FROM
                  (select distinct time from tableA order by time desc limit 2 
                  ) AS tmptable
                );

你有更好的解决方案吗?我正在使用 mysql 5.5

4

1 回答 1

2

我看不出您的查询有什么问题,但我更喜欢使用OUTER JOIN/NULL检查(加上它减少了对嵌套子查询之一的需求):

delete a
from tableA a 
  left join 
  (
      select distinct time 
      from tableA 
      order by time desc 
      limit 2 
  ) b on a.time = b.time
where b.time is null
于 2013-07-15T23:30:18.117 回答