Вложенный запрос к той же таблице

Как вы думаете, такой запрос создаст проблему при выполнении моего программного обеспечения? Мне нужно удалить все таблицы, кроме последних 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

1 ответ

Я не вижу ничего плохого в вашем запросе, но я предпочитаю использовать 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
Другие вопросы по тегам