SQL - 문제 미리보기
문제 1665
medium
다음 Self Join 쿼리에서 `A.CustomerID <> B.CustomerID` 조건의 목적은?
```sql
SELECT A.CustomerName, B.CustomerName, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
```
```sql
SELECT A.CustomerName, B.CustomerName, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
```
정답: B
Self Join에서 자기 참조 방지의 필요성:
• Self Join 특성: 같은 테이블을 조인하므로 자기 자신과 매칭될 수 있음
• 불필요한 결과: "Alice와 Alice가 같은 도시에 산다"는 의미없는 결과
• 조건 필요: 자기 자신을 제외하는 조건 추가
조건 없을 때의 문제:
```sql
-- 자기 참조 방지 조건 없음
SELECT A.CustomerName, B.CustomerName, A.City
FROM Customers A, Customers B
WHERE A.City = B.City;
-- 결과에 포함되는 불필요한 레코드
CustomerName1 | CustomerName2 | City
Alice | Alice | Berlin ← 불필요
Alice | Bob | Berlin
Bob | Alice | Berlin
Bob | Bob | Berlin ← 불필요
```
조건 추가 후:
```sql
-- 자기 참조 방지 조건 추가
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City;
-- 의미있는 결과만 출력
CustomerName1 | CustomerName2 | City
Alice | Bob | Berlin
Bob | Alice | Berlin
```
💡 학습 팁
이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.