데이터베이스에서 특정 조건에 해당하는 여러 레코드를 한 번에 삭제하는 작업은 자주 필요로 합니다. 이러한 작업을 효율적으로 수행하는 방법 중 하나는 `DELETE`와 `SELECT`를 조합하여 `IN` 연산자를 사용하는 것입니다.
1. 기본 삭제 방법
일반적으로 레코드를 삭제할 때는 다음과 같은 구문을 사용합니다.
delete from A where A.idx=?
2. 서브쿼리를 사용한 삭제
다른 테이블에서 검색한 결과를 기반으로 삭제하고자 할 때는 서브쿼리를 사용합니다.
delete from A where A.idx= (select idx from B where B.name=?)
3. 다중 레코드 삭제
여러 레코드를 한 번에 삭제하려면 IN 연산자를 사용하여 다음과 같이 작성합니다.
delete from A where A.idx IN (select idx from B where B.name=?)
4. 동일 테이블에서의 다중 레코드 삭제
같은 테이블 내에서 특정 조건에 맞는 레코드를 삭제하려면, 임시 별칭을 사용하여 서브쿼리를 작성합니다.
delete from A where idx IN (select idx from (select * from A where name=?) AS resultTable)
결론
데이터베이스에서 특정 조건에 맞는 여러 레코드를 효과적으로 삭제하려면, `DELETE`, `SELECT`와 `IN` 연산자를 적절히 활용해야 합니다. 이 방법을 이용하면 복잡한 조건에도 빠르고 정확하게 데이터를 삭제할 수 있습니다.
'Language > SQL' 카테고리의 다른 글
[MYSQL] insert, update 시 특수문자 입력하기 (0) | 2022.07.05 |
---|---|
[MYSQL] 지정한 범위에서 연속 숫자 증가 업데이트(update) 하기 (0) | 2022.06.03 |
[MYSQL] 검색결과 값 합치기 (select, CONCAT, GROUP_CONCAT) (0) | 2021.10.08 |
[MYSQL] AUTO_INCREMENT 증가값 초기화 및 재정렬하기 (0) | 2021.10.08 |
[MYSQL] 테이블(TABLE)과 컬럼(COLUMN)의 코멘트(COMMENT) 정보 조회하기 (0) | 2021.05.12 |