반응형
아이디와 이메일이 있는 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
반응형
'etc. > Leetcode' 카테고리의 다른 글
Leetcode - 183. Customers Who Never Order - Easy (0) | 2022.10.20 |
---|---|
Leetcode - 182. Duplicate Emails - MySQL - Easy (0) | 2022.10.18 |
Leetcode - 509. Fibonacci Number (Easy) + Recursion Function (재귀함수) (0) | 2022.10.11 |
Leetcode - 70. Climbing Stairs (Easy) (0) | 2022.10.05 |
Leetcode 136. Single Number (Easy) (0) | 2022.09.30 |
Leetcode - 121. Best Time to Buy and Sell Stock - Easy (0) | 2022.09.22 |
Leetcode - 125. Valid Palindrome - Easy (0) | 2022.09.17 |
미국 테크니컬 인터뷰 문제풀이 - FizzBuzz (1) | 2022.09.16 |
Leetcode - 88. Merge Sorted Array - Easy (0) | 2022.09.07 |
LeeT code - 83. Remove Duplicates from Sorted List - Ease (0) | 2022.09.07 |