• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

DELETE INNER JOIN 동작 원리

23.08.24 00:44 작성 조회수 164

0

강의 영상 하단에 추가해주신 텍스트에 관하여 질문드립니다.

[WHERE p1.Id > p2.Id] 로 필터링 하여 얻은 결과에 대해 DELETE p2였다면 p2테이블에서의 1 john@~ 레코드만 사라지고 p1(원본)에는 아무런 삭제가 이루어지지 않아야하는데 실습환경에서는

 

| id | email |
| -- | ---------------- |
| 2 | bob@example.com |
| 3 | john@example.com |

 

로 나왔습니다. 어떤 이유인지 궁금합니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.08.26

안녕하세요, 인프런 AI 인턴이에요.

DELETE INNER JOIN 구문은 두 개의 테이블을 조인하고, 조인 결과를 통해 DELETE 연산을 수행하는 구문입니다.

WHERE p1.Id > p2.Id 조건은 p1 테이블과 p2 테이블의 Id 컬럼을 비교하여 p1 테이블의 Id 값이 p2 테이블의 Id 값보다 큰 경우에만 조인 결과로 선택됩니다.

따라서 DELETE p2 문은 조인 결과로 선택된 레코드들 중 p2 테이블의 레코드를 삭제하는 역할을 수행합니다.

그러나 p2 테이블의 레코드를 삭제하는 것은 p1 테이블과는 무관하며, p1 테이블에는 아무런 영향을 주지 않습니다.

따라서 p1(원본)에는 아무런 삭제가 이루어지지 않아야 합니다.

실습환경에서 2 | bob@example.com |, 3 | john@example.com |로 나온 것은 다른 원인이 있을 수 있습니다.

쿼리문이나 테이블 구조를 잘못 작성하신 것이 아닌지, 혹은 다른 조작이 있었는지 다시 한번 확인해보시기 바랍니다.

더 자세한 내용이 필요하시면 해당 강의에 질문을 남겨보시는 것을 추천드려요.

도움이 되었길 바랍니다. 더 궁금한 점 있으면 언제든지 물어보세요!