JOIN을 사용하여 중복 데이터 삭제하기

데이터베이스에서 중복된 데이터를 삭제해야 할 때, JOIN을 사용하는 것은 효과적인 방법입니다. JOIN은 두 개 이상의 테이블을 연결하여 원하는 결과를 얻을 수 있는 SQL 기능입니다. 이 글에서는 JOIN을 사용하여 중복 데이터를 삭제하는 방법에 대해 알아보겠습니다.

중복 데이터 확인하기

먼저, 중복 데이터를 확인하는 쿼리를 실행해보겠습니다. 예를 들어, “users”라는 테이블에서 “email” 열을 기준으로 중복된 데이터를 찾고 싶다고 가정해봅시다.

SELECT email, COUNT(*) as cnt
FROM users
GROUP BY email
HAVING cnt > 1;

위의 쿼리는 “email” 열을 기준으로 그룹화한 후, 각 그룹의 행 개수를 세어서 1보다 큰 그룹을 찾습니다. 이렇게 하면 중복된 데이터가 포함된 그룹만 선택됩니다.

중복 데이터 삭제하기

중복 데이터를 삭제하기 위해선 중복되는 행 중 하나를 유지하고 나머지를 삭제해야 합니다. 이를 위해 DELETE문을 사용할 수 있습니다.

앞서 확인한 중복 데이터를 삭제하려면 다음과 같은 쿼리를 실행하면 됩니다.

DELETE FROM users
WHERE id NOT IN (
  SELECT MIN(id)
  FROM users
  GROUP BY email
  HAVING COUNT(*)>1
);

위의 쿼리는 “email” 열을 기준으로 그룹화한 후, 각 그룹에서 가장 작은 id를 가진 행을 제외한 나머지 행을 삭제합니다. 이렇게 하면 중복 데이터가 삭제됩니다.

마무리

JOIN을 사용하여 중복 데이터를 삭제하는 방법에 대해 알아보았습니다. 중복 데이터는 데이터베이스의 성능을 저하시킬 수 있으므로, 정기적으로 중복 데이터를 확인하고 삭제하는 것이 좋습니다. 이를 통해 데이터의 일관성을 유지하고 데이터베이스의 효율성을 향상시킬 수 있습니다.

#데이터베이스 #JOIN