2013-07-15 2 views
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을 사용하고

답변

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