2013-07-15 3 views
1

Как вы думаете, такой запрос вызовет проблему при выполнении моего программного обеспечения? Мне нужно удалить всю таблицу, за исключением последних двух групп записей, сгруппированных по тому же времени вставки.Вложенный запрос в ту же таблицу

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

ответ

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 
Смежные вопросы