Language/SQL
[MYSQL] 검색한 결과 여러개 한번에 삭제 Delete 와 select에서 IN 사용하기
멱군
2021. 11. 9. 15:23
데이터베이스에서 특정 조건에 해당하는 여러 레코드를 한 번에 삭제하는 작업은 자주 필요로 합니다. 이러한 작업을 효율적으로 수행하는 방법 중 하나는 `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` 연산자를 적절히 활용해야 합니다. 이 방법을 이용하면 복잡한 조건에도 빠르고 정확하게 데이터를 삭제할 수 있습니다.