본문 바로가기

DB

[MSSQL 2000] 다른 테이블과 조인걸고 DELETE 하기

일반 DELETE문과 조인거는 SELECT문의 단순한 결합이라고 생각하면 된다.
WHERE없는 일반적인 DELETE문을 만들어놓는다.

그리고 삭제하길 원하는 데이터만 나오도록 쿼리문을 만든다.
SELECT 부라부라
FROM 부라부라
INNER JOIN 부라부라
의 형태가 나올것인데 이 중에서 FROM부터 마지막까지를 복사한다.

DELETE시에 삭제하고자 하는 테이블을 첫번째 FROM에 놓고,
조인걸고자 하는 테이블을 두번째 FROM에 놓고,
그담부터 자유롭게 조인건다.


1.일반 DELETE문
DELETE	
FROM	테이블AA

2.삭제할 내용만 뽑아내는 SELECT문
SELECT	AA.*
FROM	테이블AA AA WITH (NOLOCK)
INNER JOIN 테이블BB BB WITH (NOLOCK)
	ON AA.컬럼CC=BB.컬럼CC
	AND AA.컬럼DD=BB.컬럼DD
	AND AA.컬럼EE=BB.컬럼EE
	AND AA.컬럼FF=BB.컬럼FF
	AND CONVERT(CHAR(8),BB.컬럼DATETIME,112) BETWEEN '20090701' AND '20090802'
	AND BB.컬럼CC = 'XV'

3.위 두 쿼리문의 결합
DELETE	
FROM	테이블AA
FROM	테이블AA AA WITH (NOLOCK)
INNER JOIN 테이블BB BB WITH (NOLOCK)
	ON AA.컬럼CC=BB.컬럼CC
	AND AA.컬럼DD=BB.컬럼DD
	AND AA.컬럼EE=BB.컬럼EE
	AND AA.컬럼FF=BB.컬럼FF
	AND CONVERT(CHAR(8),BB.컬럼DATETIME,112) BETWEEN '20090701' AND '20090802'
	AND BB.컬럼CC = 'XV'

FROM절이 두 번 나와서 좀 이상해 보이지만 이게 정상 쿼리문이다.