2011-05-04 9 views
0

날짜 필드가없는 6 개월보다 오래된 테이블에서 데이터를 삭제하려고합니다. 저에게 알려주세요.날짜 필드가없는 테이블에서 데이터 삭제

+1

http://tinyurl.com/so-hints – Oded

+0

날짜 입력란이있는 다른 테이블로 연결되는 키 열이있는 경우이 번호를 사용하십시오. table1.table2id = table2.table2id의 table1 내부 조인 table2에서 삭제 table2date <@ dateolderthan6months – Andrew

+0

할 수 없습니다. SQL Server에 보관 된이 성질에 대한 별도의 감사는 없습니다 –

답변

6

날짜 필드가 없으면이 작업을 수행 할 수 없습니다.

그러나 6 개월 전 백업이있는 경우 해당 백업에 있던 테이블에서 모든 데이터를 삭제할 수 있습니다.

+0

19 초 후에 저를 이길 수 있습니다. +1 – zeroef

+0

그래, 나는 같은 것을 제안했다. –

0

월당 생성되는 데이터의 평균을 계산할 수 있습니다. * 6은 보관할 행 수를 제공합니다. 그래서 최대 n 개의 ID를 사용할 수 있습니다. 테이블은 ID가없는 경우,이 같은 인공 하나를 사용할 수 있습니다 날짜 열없이

SELECT *, n = ROW_NUMBER() OVER (ORDER BY (SELECT NULL)), 
FROM your_table_name 
+0

테이블에'id' 필드가 없다면이 정보로 무엇을해야할까요? –

0

을, 당신은 행 6 개월보다 오래된 알 수 없습니다. 이는 키 열이 단조롭게 증가하는 값 (즉, 단순한 정수 시퀀스가 ​​아닌) 인 경우 특히 문제가됩니다.

그러나 데이터베이스를 백업 한 경우 6 개월 된 백업 dB의 행 목록을 생성하고 현재 dB의 행과 비교하여 이후에 추가 된 행을 추론 할 수 있습니다 백업이 만들어졌다. 나머지 행은 6 개월 이상 지난 것입니다. 행의 키 열 (예 : 정수 순서, 또는 고유 증가 계정 ID로) 일정하게 증가하는 값을 경우

제안 # 2

, 당신은 (매달 특별한 감시를 레코드를 삽입 할 수 또는 주 또는 일)에 마커 행 (및 일반 데이터가 아님)을 알려주는 특수 값이 포함되어 있어야합니다. 그 다음, 센티넬의 키 값보다 낮은 키 필드 값을 가진 모든 행이 센티넬 앞에 삽입되었음을 알게됩니다.

그런 다음 매월 (주/일/어쨌든) 이전 행을 찾고 삭제하는 것은 매우 간단합니다.

관련 문제