嵌套查询在同一个表上

时间:2013-07-15 22:51:30

标签: mysql nested-query

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

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

1 个答案:

答案 0 :(得分: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