제한

2014-10-24 2 views
0

나는 다음과 같은 테이블 구조를 가지고 가정 같은 고양이 값. 예를 들어
내가 그들의 100 cat0xa007이 5K 행이, 지금은 다음과 같이 뭔가를 최신 (10 개) 기록을 보관하고 나머지 90 개 행을 삭제하려면 :제한

delete foo.bar f where f.cat=(x'a007'::integer) and f.id not in (
    select b.id from foo.bar b where b.cat=(x'a007'::integer) 
    order by b._date desc limit 10 offset 0) 

그러나 위의 하나에서만 작동 카테고리, 모든 카테고리 (모든 값)에 대한 검색어를 어떻게 가질 수 있습니까?

답변

0

당신은 같은 것을 수행 할 수 있습니다

delete from foo.bar where id in 
(
select id from 
    (select id, rank() over (partition by cat order by _date) ranking from foo.bar) A 
    where ranking > 10 
)