인프런 커뮤니티 질문&답변

지루한 청어님의 프로필 이미지

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL

DELETE 리트코드 문제풀이 + 섹션 3 서브쿼리 맛보기

리트코드 196. delete duplicate emails 질문

20.08.17 21:50 작성

·

256

2

안녕하세요, 데잇걸즈 4기 정우진입니다.

강의에서 설명해주신 답안과 다르게 중간 select 절 없이 바로 MIN(id)로 연결했더니 에러가 발생하더라구요.

왜 그런지 이유가 궁금합니다.

--제 답안

DELETE 

FROM person 

WHERE id NOT IN 

(SELECT MIN(id) AS min_id

 FROM person

 GROUP BY email)

--강의답안

DELETE

FROM person

WHERE id NOT IN

(SELECT sub.min_id

FROM

(SELECT email, MIN(id) AS min_id

FROM person

GROUP BY email) sub)

답변 1

2

canary4651님의 프로필 이미지
canary4651
지식공유자

2020. 08. 18. 00:24

안녕하세요 우진님? 

MySQL은 DELETE문의 하위 절에서 동일한 테이블을 사용하지 못하게 하고 있습니다. 그래서 'NOT IN'절에서 새 테이블이 필요하기 때문에 중간에 select 문을 넣어 새롭게 만들어줘야만 사용할 수 있습니다. 

https://dev.mysql.com/doc/refman/5.6/en/delete.html

https://dev.mysql.com/doc/refman/8.0/en/subquery-restrictions.html

이 링크를 참고하시면 더 많은 도움이 될 것입니다. :)