본문 바로가기

코딩일기

SQL 코드카타 122 - Delete Duplicate Emails

https://leetcode.com/problems/delete-duplicate-emails/

 

Column Type
id int
email varchar

 

Person 테이블:

  • id : 테이블의 고유 키
  • email : 이메일주소

Person 테이블에서 이메일(email)이 중복된 경우 중 가장 작은 id를 가진 행을 남기고 나머지 중복 행들을 모두 삭제하는 문제입니다. 이를 SQL로 해결하는 DELETE 문장을 작성해야 합니다.

 

delete p1
from Person p1, Person p2 
where p1.email = p2.email AND p1.id > p2.id

 

delete 구문을 사용하는 것은 처음이었기때문에 많이 찾아보았다. delete는 일반적으로 where와 함께 사용된다.

이번 문제에서 delete구문을 처음 보았기 때문에 어떤 식으로 값이 변하는지 조건문에 따른 조건들을 확인해보고 싶었지만 사이트에서 해당 문제에서는 테이블을 출력하는 것이 아니라 데이터베이스를 출력하도록 설정이 바뀌어있었기때문에 여러가지 경우를 시험해보지는 못했다.

지금은 delete구문이 어떻게 작동을 하는지만 알아두고 나중에 다른 문제를 보았을때, 더 활용을해보아야겠다.