SQL

[LeetCode] Delete Duplicated Emails 📌

응엉잉 2024. 2. 16. 00:13

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

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

중복된 이메일을 삭제하는 문제이다.

테이블에서 어떤 column을 지우기 위해서는 DELETE 문을 사용해야 한다.

 

1. 서브쿼리를 활용해서 지우지 말아야하는 id와 이메일을 뽑고

2. 해당 서브쿼리의 id를 가져와서

3. 지우지 말아야하는 id 외의 id는 모두 지우는

 

방식의 쿼리를 작성할거다!

 

1.

SELECT email, MIN(id)
FROM person
GROUP BY email

 

id가 가장 작은 email만 남기면 되므로, GROUP BY 함수를 이용해 email별로 가장 작은 id를 뽑았다.

 

2. 

SELECT temp.id -- AS로 붙인 별칭을 통해 해당 column을 불러온다
FROM (1번쿼리)
	AS temp -- 1번쿼리를 FROM절 서브쿼리로 사용하기 위해서는 AS로 별칭을 붙여줘야 한다

 

이렇게 하면 지우지 말아야 할 id를 다 뽑았다 !

 

3. 

DELETE -- 2. 삭제한다 !
FROM person
WHERE id NOT IN (2번쿼리) -- 1. 지우지 말아야할 리스트에 id가 없으면

 

종합하면 다음과 같다.

DELETE
FROM Person
WHERE Id NOT IN(
	SELECT temp.ID
	FROM (
		SELECT Email
					,MIN(ID) AS id
		FROM Person
		GROUP BY Email
	) AS temp
)

'SQL' 카테고리의 다른 글

Window Function  (0) 2024.05.08
[문법] IF / CASE WHEN  (0) 2023.12.28
[문법] LIKE  (0) 2023.12.28
leetcode_reformat department table  (0) 2023.01.13
HackerRank_SQL_Type of Triangle <못품>  (0) 2023.01.11