데이터베이스에서 중복된 데이터를 필터링하고, 해당 데이터의 소유자를 변경하는 작업을 수행해야 할 때가 있습니다. 이러한 상황에서 JOIN을 사용하여 중복 데이터를 필터링하고 소유자를 변경하는 방법을 알아보겠습니다.
중복 데이터 필터링하기
중복 데이터를 필터링하기 위해선 SELECT
문에 DISTINCT
키워드를 사용합니다. 예를 들어, 다음과 같은 테이블이 있다고 가정해봅시다.
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
department VARCHAR(100)
);
INSERT INTO employees (id, name, department)
VALUES (1, 'John', 'Sales'),
(2, 'Alice', 'Marketing'),
(3, 'John', 'Sales'),
(4, 'Bob', 'HR'),
(5, 'Alice', 'Marketing');
위의 테이블에서 name
이 중복되는 데이터를 필터링하기 위해 SELECT DISTINCT
문을 사용할 수 있습니다.
SELECT DISTINCT name
FROM employees;
위의 쿼리를 실행하면, 중복되지 않은 name
값을 가진 레코드만 반환됩니다.
소유자 변경하기
중복 데이터를 필터링했으면, 이제 해당 데이터의 소유자를 변경해야 합니다. 데이터베이스에서는 UPDATE
문을 사용하여 레코드 업데이트를 수행합니다. 예를 들어, name
이 ‘Alice’인 레코드의 department
를 ‘Sales’로 변경하고 싶을 경우 다음과 같은 쿼리를 작성할 수 있습니다.
UPDATE employees
SET department = 'Sales'
WHERE name = 'Alice';
위의 쿼리를 실행하면, ‘Alice’의 소속이 ‘Marketing’에서 ‘Sales’로 변경됩니다.
JOIN을 사용하여 중복 데이터 필터링 및 소유자 변경하기
이제 JOIN
을 사용하여 중복 데이터를 필터링하고 소유자를 변경하는 방법에 대해 알아보겠습니다. 예를 들어, name
이 중복되는 데이터를 필터링하고 해당 데이터의 department
를 ‘HR’로 변경하고 싶을 경우 다음과 같은 쿼리를 작성할 수 있습니다.
UPDATE employees
JOIN (
SELECT name
FROM employees
GROUP BY name
HAVING COUNT(*) > 1
) AS dup
ON employees.name = dup.name
SET department = 'HR';
위의 쿼리를 실행하면, name
이 중복된 레코드의 department
가 ‘HR’로 변경됩니다.
마무리
JOIN
을 사용하여 중복 데이터를 필터링하고 소유자를 변경하는 방법을 알아보았습니다. 중복 데이터를 필터링하고 변경작업을 수행할 때 유용하게 사용할 수 있는 방법입니다. 필요한 경우, 실제 데이터베이스 스키마에 맞게 코드를 수정하여 사용하시면 됩니다.
참고 자료
#database #sql