[TIL] DELETE에서의 서브쿼리 활용

Hanna Kim·2020년 8월 12일
1

SQL

목록 보기
1/11
post-custom-banner

LEETCODE 196.Delete Duplicate Emails
(https://leetcode.com/problems/delete-duplicate-emails/)

1) Delete+Subquery
2) Delete+Join

두 방법으로 풀 수 있는데, 1)서브쿼리로 풀던 중 오류가 나왔다.

DELETE FROM Person
WHERE id not in 
    (SELECT min(id) 
        FROM Person
        GROUP BY email)

You can't specify target table 'Person' for update in FROM clause

이유:
MySQL에서 UPDATE & DELETE 를 할 때 자기 테이블의 데이터를 바로 사용하지 못한다고 한다.
그래서 아래와 같이 서브쿼리를 하나 더 넣어야 한다.

DELETE FROM Person
WHERE id not in (SELECT new.mind
   FROM (SELECT min(id) as mind 
       	 	FROM Person
        	GROUP BY email) new)

Photo by Rohit Farmer on Unsplash

profile
쌓으며 배우는 중
post-custom-banner

0개의 댓글