• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

리트코드 196. delete duplicate emails 질문

20.08.17 21:50 작성 조회수 160

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

안녕하세요 우진님? 

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

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