2017-09-30 6 views
0

행이있는 테이블이 하나있는 SQL Server 2008 R2 Express 데이터베이스가 있습니다. 데이터베이스 크기가 약 10GB가되면이 테이블에서 N 개의 마지막 레코드를 정리해야합니다.SQL Server 2008 R2 데이터베이스에서 마지막 N 레코드를 삭제하는 방법은 무엇입니까?

나는

DELETE FROM mytable 
WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100) 

감사를 이런 식으로 뭔가를해야하지만 SQL Server 용.

데이터베이스 구조 :

strSQL = "SELECT DateAndTime 
       ,TagName 
       ,Val 
       ,SetPoint 
       ,Limit_H 
       ,Limit_L 
       ,Result 
      FROM dbo.Statistic...." 

UPD. 여유 공간이 필요하기 때문에 "DateAndTime"에 의존하지 않지만 1 일 (또는 1 주)은 1 개의 레코드로만 구성 될 수 있습니다. 이해할 수있는대로 ... 200,000 개의 레코드를 삭제해야합니다. 여기

+1

이 참조가 [ROW_NUMBER (https://en.wikipedia.org/wiki/Hypervisor), 아마도 - 아직하지만 적절한 정의 순서가 있어야한다. 색인 순서에 의존하려고 시도 할 수 있습니다, ymmv; 비즈니스 주문을 선택하는 것이 훨씬 낫습니다 - DateAndTime, 아마도? – user2864740

+0

ROW_NUMBER의 예인 [here] (https://stackoverflow.com/a/4193757/2276098)를 참조하십시오. –

+0

"마지막"은 무엇을 의미합니까? 뭐라구? –

답변

2

당신은 이동 :

DELETE FROM mytable 
WHERE %%physloc%% IN (SELECT TOP 100 %%physloc%% AS RN FROM mytable ORDER BY RN DESC);