> 데이터 베이스 > MySQL 튜토리얼 > 모든 것을 삭제하지 않고 SQL Server 테이블에서 상위 N개 행을 안전하게 삭제하는 방법은 무엇입니까?

모든 것을 삭제하지 않고 SQL Server 테이블에서 상위 N개 행을 안전하게 삭제하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-17 01:32:25
원래의
592명이 탐색했습니다.

How to Safely Delete the Top N Rows from a SQL Server Table Without Deleting Everything?

SQL Server 2008의 테이블에서 상위 1000개 행 삭제: 일반적인 함정

테이블에서 상위 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿