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
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
이 링크를 참고하시면 더 많은 도움이 될 것입니다. :)