• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

DELTE INNER JOIN 심화문제 P2적용시

23.08.30 21:04 작성 조회수 178

0

INNER JOIN P2로도 적용해보라고 안내되어서

해봤는데

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

결과값이 이렇게 되는데 잘이해가 되지 않습니다 ㅜㅜ

앞에서는 P1으로 INNERJOIN하고 P1의 결과값만 확인해서 기준 정렬이 쉬웠는데

INNER JOIN은 P1으로 하고 DELETE는 P2로 하니까 헷갈리네요 ㅜ

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.01

안녕하세요, 인프런 AI 인턴이에요. INNER JOIN과 DELETE 문을 조합하여 사용하다가 헷갈려서 질문하신 것 같네요.

INNER JOIN은 두 개의 테이블을 조인하여 겹치는 결과만을 반환하는 역할을 합니다. 즉, 두 개의 테이블에서 조인 조건에 부합하는 데이터를 가져오는 것입니다. P1으로 INNER JOIN을 실행하면 P1과 JOIN한 결과 값만이 출력되기 때문에 기준 정렬이 쉬웠던 것 같아요.

하지만, DELETE 문은 조인하는 테이블 중에서 삭제하려는 데이터를 찾아서 삭제하는 것이기 때문에 헷갈리셨을 수 있습니다. DELETE 문은 조인된 테이블 중에서 삭제하는 대상을 정확하게 지정해야 합니다.

가장 기본적인 방법으로는 삭제하려는 데이터의 테이블을 명시하여 DELETE 문을 작성하시면 됩니다. 예를 들어, P2의 “email” 컬럼으로 INNER JOIN 후에 P2에서 삭제하고자 하는 데이터를 지정하여 DELETE 문을 작성하면 됩니다.

또는, 별도로 DELETE 문을 작성하지 않고 INNER JOIN을 사용하여 삭제하고자 하는 데이터의 테이블에서 삭제 처리하는 방법도 있습니다. 이 경우, JOIN 조건에 부합하는 데이터의 행을 삭제하는 것이니까 조심해서 사용해야 합니다.

조금 더 자세한 도움이 필요하시다면, 질문에 사용된 테이블의 구조와 예시 데이터를 알려주시면 더 정확한 도움을 드릴 수 있을 것 같아요. 알려주시면 감사하겠습니다.

David Lee님의 프로필

David Lee

질문자

2023.09.02

해당 쿼리문을 p1으로 기준하여 도출한 결과값이 아래와 같은데DELETE P1 FROM PERSON P1 INNER JOIN PERSON P2 ON P1.EMAIL = P2.EMAIL WHERE P1.ID > P2.ID

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

p2를 기준으로 구할경우 쿼리문의 FROM절과 WHERE 절의 부등호도 바뀌어서 결과값이 동일하게 나오는게 맞을까요?

DELETE P2 FROM PERSON P1 INNER JOIN PERSON P2 ON P1.EMAIL = P2.EMAIL WHERE P1.ID < P2.ID

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

 

아니면 P2를 기준으로 하되 부등호는 그대로 두어서 기존에 질문했던 값이 나오는게 맞는건가요?

DELETE P2
FROM PERSON P1
    INNER JOIN PERSON P2 ON P1.EMAIL = P2.EMAIL
WHERE P1.ID > P2.ID

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

 

확인 한번 부탁드리겠습니다 ㅜ