Database

SQL UPDATE WHERE IN

SQL에서 SELECT로 조회한 ID 목록을 UPDATE WHERE IN으로 즉시 수정하는 방법. 서브쿼리와 JOIN UPDATE 패턴을 MySQL·PostgreSQL 예제로 정리합니다.

SQL UPDATE WHERE IN

SQL에서 특정 조건에 맞는 데이터를 조회한 후,
그 데이터를 업데이트하는 것은 매우 일반적인 작업입니다.
이 문서에서는 데이터를 조회 후 업데이트를 구현하는 방법과 그와 관련된 몇 가지 SQL 예제를 제공합니다.

1. 조회 후 업데이트하기

조회 후 업데이트를 할 때는 다음과 같은 절차를 따릅니다:

  1. 조회 쿼리 작성: 업데이트하려는 데이터의 조건을 확인하기 위한 조회 쿼리를 작성합니다.
  2. 업데이트 쿼리 작성: 조회된 결과를 기반으로 데이터베이스를 업데이트합니다.

예를 들어, Sales 부서에 속한 모든 직원의 급여를 'abc'로 업데이트하려고 할 때, 다음과 같이 할 수 있습니다:

예제: IN 문을 사용한 조회 후 업데이트

-- Sales 부서에 속한 직원의 급여를 'abc'로 업데이트
UPDATE employees
SET salary = 'abc'
WHERE id IN (
    SELECT id
    FROM employees
    WHERE department = 'Sales'
);

위 예제에서는 IN 절을 사용하여 Sales 부서의 직원들을 조회한 후, 해당 직원들의 급여를 업데이트하고 있습니다. 이 방법은 조회된 결과에 포함된 id와 일치하는 행만 업데이트합니다.

조회 후 조건에 맞춰 업데이트 구현 예제

데이터를 조회하여 특정 조건에 맞는 데이터를 업데이트하는 방법은 다양한 상황에서 사용됩니다. 예를 들어, 부서가 Sales인 직원의 급여를 조회한 후 조건에 맞게 변경하려는 경우를 생각해 볼 수 있습니다.

예제: 조회 후 조건에 맞춰 업데이트

-- 1. 급여가 5000 이하인 Sales 부서 직원 조회
SELECT id, name, salary
FROM employees
WHERE department = 'Sales' AND salary <= 5000;

-- 2. 조회된 직원의 급여를 5500으로 업데이트
UPDATE employees
SET salary = 5500
WHERE id IN (
    SELECT id
    FROM employees
    WHERE department = 'Sales' AND salary <= 5000
);

위 예제는 다음과 같은 단계로 진행됩니다:

  1. 조회 쿼리: Sales 부서에서 급여가 5000 이하인 직원들을 조회합니다.
  2. 업데이트 쿼리: 조회된 결과에서 id를 이용해, 해당 직원들의 급여를 5500으로 업데이트합니다.

이 방식은 매우 효율적으로 데이터를 조회하고, 조회된 결과에 따라 조건부 업데이트를 수행할 수 있는 방법입니다.

참고 사항

  • 조회와 업데이트의 결합: 조회와 업데이트는 SQL의 서브쿼리, JOIN, EXISTS 등을 이용하여 결합할 수 있습니다.
  • 트랜잭션 관리: 복잡한 조회와 업데이트의 경우, 트랜잭션을 사용하여 일관성을 유지하고 오류 발생 시 롤백할 수 있도록 관리하는 것이 좋습니다.

이와 같이 SQL을 활용하여 다양한 조건에 맞는 데이터를 조회하고 업데이트할 수 있습니다.

댓글