본문 바로가기
[ DataBase ]/DB&Query

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

by 관이119 2014. 11. 14.

 

출처 - http://seoddong.tistory.com/33

 

 

일반 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절이 두 번 나와서 좀 이상해 보이지만 이게 정상 쿼리문이다.

'[ DataBase ] > DB&Query' 카테고리의 다른 글

쿼리 로그 보기  (0) 2015.06.29
MSSQL split 기능  (0) 2015.02.03
테이블에 걸려있는 트리거 확인  (0) 2014.07.23
MSSQL 프로시저내의 동적쿼리 및 개행문자(줄바꿈)  (0) 2014.04.30
MSSQL 0 붙이기  (0) 2014.03.14

댓글