반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

Leetcode 196 Delete Duplicate Emails (SQL) - Easy

2022. 11. 21. 19:27 | Posted by 솔웅


아이디와 이메일이 있는 Person이라는 테이블이 있습니다.

여기서 id는 키 컬럼이라서 유니크 합니다.

이메일에는 중복된 데이터가 들어갈 수 있습니다.

이메일이 중복 됐을 경우 하나만 남기고 나머지를 지워서 유니크하게 만드는 쿼리를 만들라는 문제 입니다.

이메일은 모두 소문자 입니다.

 

 

일단 하나 하나 접근해 보겠습니다.

테이블은 하나 이지만 이 하나인 테이블을 조인 할 수 있습니다.

 

우선 이 조인을 사용해서 이메일이 중복된 걸 찾아 보겠습니다.

 

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email
;

이렇게 하면 중복된 이메일 리스트를 얻을 수 있습니다.

 

여기서 중복된 이메일들 중에 아이디가 더 큰 것을 골라 보겠습니다.

 

SELECT p1.*
FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email AND p1.Id > p2.Id
;

이렇게 하면 지우고 싶은 데이터만 출력 되는 것을 보실 수 있습니다.

 

그러면 이 where 절을 사용해서 지우면 됩니다.

 

DELETE p1 FROM Person p1,
    Person p2
WHERE
    p1.Email = p2.Email AND p1.Id > p2.Id
반응형

Comment