단일 테이블의 자료를 삭제할 때 테이블내의 조건으로 삭제하는 것은 단순하게
WHERE 조건만 이용하면된다.
DELETE FROM 테이블명
WHERE 조건
그런데 TABLE1 과 TABLE2 를 조인한 조건으로 TABLE1의 자료를 삭제하는 경우는 조금 복잡하다.
예를 들어 reference 제약조건 없이 만들어진 부모(TABLE2) 자식(TABLE1) 관계의 테이블에서
부모(TABLE2) 가 없는 자식(TABLE1) 자료를 조사하여 삭제해야하는 경우가 있다.
/*** 키값이 1개일 때 ***/-- 대상 검색SELECT A.COL1 FROM TABLE1 A LEFT JOIN TABLE2 B ON A.COL1 = B.COL1WHERE B.COL1 IS NULL-- 하위 쿼리 이용하여 삭제DELETE FROM TABLE1WHERE COL1 IN(SELECT A.COL1 FROM TABLE1 A LEFT JOIN TABLE2 B ON A.COL1 = B.COL1WHERE B.COL1 IS NULL)/*** 키값이 2개 이상일 때도 가능 ****/-- 대상 검색SELECT *FROM TABLE1 ALEFT JOIN TABLE2 B ON A.COL1=B.COL1 AND A.COL2=B.COL2WHERE B.COL1 IS NULL-- Transact-SQL FROM 확장을 통해 삭제DELETE FROM AFROM TABLE1 ALEFT JOIN TABLE2 B ON A.COL1=B.COL1 AND A.COL2=B.COL2WHERE B.COL1 IS NULLcs
'SQL Server' 카테고리의 다른 글
SSMS 2014 SP2 서비스팩2 버전 설치 경로 (0) | 2018.01.31 |
---|---|
연령대별 인원수 구하기 (0) | 2018.01.13 |
테이블, 뷰, 프로시저, 함수 일괄삭제 (0) | 2018.01.04 |
월의 첫날, 월의 말일, 년의 첫날, 년의 말일, 문자열 일(DD)이 없는 달은 말일구하기 (0) | 2017.12.05 |
ORDER BY 없이 현재 보이는 순서대로 ROW_NUMBER() 구하기 (0) | 2017.11.30 |