ふたりで

MSSQL SELECT 결과로 DELETE 하기. 본문

Other

MSSQL SELECT 결과로 DELETE 하기.

graykang 2024. 7. 26. 11:46
728x90
반응형
SMALL

# MSSQL에서 지정된 조건을 기반으로 DELETE 쿼리를 작성하는 방법이다.

MSSQL에서는 다중 열을 이용한 IN 조건이 지원되지 않으므로, 대신 EXISTS를 사용할 수 있다.

아래는 Mart_User 테이블에서 mart_code와 emp_code 값이 Auth_Mart테이블의 user_mart와 user_emp 값과 일치하고, 추가로 user_auth 값이 'C'인 행을 삭제하는 쿼리이다.

DELETE FROM Mart_User 
WHERE EXISTS (
    SELECT 1
    FROM Auth_Mart
    WHERE Auth_Mart.user_mart = Mart_User.mart_code
      AND Auth_Mart.user_emp = Mart_User.emp_code
      AND Auth_Mart.user_auth = 'C'
);

이 쿼리는 다음과 같은 단계로 동작한다.

  1. EXISTS 서브쿼리를 사용하여 Auth_Mart 테이블에서 user_mart와 user_emp 값이 Mart_User 테이블의 mart_code와 emp_code 값과 일치하고 user_auth 값이 'C'인지를 확인한다.
  2. EXISTS 조건이 참인 경우, Mart_User 테이블에서 해당 행을 삭제한다.
728x90
반응형
SMALL

# 삭제될 행을 미리 확인하기 위해 아래와 같이 SELECT 쿼리를 사용할 수 있다.

SELECT * FROM Mart_User 
WHERE EXISTS (
    SELECT 1
    FROM Auth_Mart
    WHERE Auth_Mart.user_mart = Mart_User.mart_code
      AND Auth_Mart.user_emp = Mart_User.emp_code
      AND Auth_Mart.user_auth = 'C'
);
728x90
반응형
LIST
Comments