Write a solution to delete all duplicate emails, keeping only one unique email with the smallest id.
중복되는 이메일을 제거해라. 단, 가작 작은 수의 ID를 가진 이메일만 남겨놓고.
* For SQL users, please note that you are supposed to write a DELETE statement and not a SELECT one.
[정답]
DELETE p1
FROM person p1, person p2
WHERE p1.email = p2.email -- 이메일이 같은 행
AND p1.id > p2.id -- id가 큰 행을 제거
이번 문제는 다른 문제들과 달리 SELECT가 아닌 DELETE로 중복되는 행을 직접 삭제하는 쿼리를 작성해야 했는데, 쿼리 자체는 어렵지 않았다.
한번 짚고 넘어가면 좋을 부분은 DELETE 뒤에 테이블 이름을 쓴다는 것, FROM에 한번에 두개의 테이블을 입력할 수 있다는 것이다.
'SQL' 카테고리의 다른 글
[Leetcode] 특정 문자열 처리 함수 REGEXP (0) | 2024.06.10 |
---|---|
[Leetcode] IFNULL, JOIN 다중조건 (0) | 2024.05.25 |
[Leetcode] SUM/AVG() OVER (ORDER BY ~ ROWS ~) (0) | 2024.05.21 |
[Leetcode] LEAD, LAG (0) | 2024.05.21 |
[프로그래머스] SQL 반복문, WITH RECURSIVE (0) | 2024.05.21 |