테이블에서 상위 1000개 행을 삭제하려고 할 때 개발자는 종종 예상치 못한 문제에 직면합니다. 행동. 문제 설명에 제공된 코드와 같은 코드는 의도한 대상이 아닌 전체 테이블을 삭제하게 됩니다.
문제는 샘플 코드가 DELETE 문과 SELECT 문을 결합한다는 사실에 있습니다. DELETE 문은 상위 1000개 행을 실행하여 테이블의 모든 내용을 효과적으로 삭제합니다. 이를 수정하려면 TOP 함수에 대한 특정 순서 기준을 정의해야 합니다.
상위 1000개 행을 삭제하는 보다 효율적인 방법은 CTE(공통 테이블 표현식) 또는 유사한 테이블 표현식을 활용하는 것입니다. 이를 통해 제공된 응답 코드에서 볼 수 있듯이 CTE 내에서 순서 기준을 지정할 수 있습니다.
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
이 기술을 사용하면 상위 1000개 행만 'a1' 열을 기준으로 정렬됩니다. 이 경우 삭제 대상이 됩니다. 이 접근 방식은 실수로 전체 테이블을 삭제할 위험 없이 원하는 결과를 보장합니다.
위 내용은 모든 것을 삭제하지 않고 SQL Server 테이블에서 상위 N개 행을 안전하게 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!