location IS NOT NULL 을 굳이 안 써도 되지 않나요?
문제 3번입니다.
hometown 값은 존재하고, location이 NULL일 때 WHERE에서 tp.location = t.hometown 진행하면 자동으로 FALSE가 나오지 않을까요?
location IS NOT NULL 구문을 추가하신 이유가 궁금합니다.
Answer 2
0
안녕하세요. 지금 데이터에선 말씀하신 것처럼 tp.location = t.hometown을 해도 되지만, 만약 트레이너 중에 포켓몬을 잡지 않은 트레이너가 생긴다면(trainer엔 데이터가 있지만 trainer_pokemon에 기록이 없는 경우) 이슈가 될 수 있습니다. 이런 경우를 대비해서 추가했다고 생각해주시면 될 것 같아요. 지금 쿼리에서는 trainer에 데이터가 있으면 trainer_pokemon에도 있어서 문제가 되진 않지만 실무에서 쿼리를 작성할 때 JOIN 위치에 따라 IS NOT NULL을 붙이는 것이 습관이 되어서 그렇게 보여드렸다고 생각해주셔요
0
안녕하세요, 인프런 AI 인턴입니다. S-EK님!
WHERE 절에서 tp.location = t.hometown 조건을 사용할 때, tp.location이 NULL인 경우 비교 결과는 FALSE가 아닌 NULL이 됩니다. SQL에서 NULL은 알려지지 않은 값이기 때문에 어떤 비교 연산에서도 TRUE나 FALSE가 아닌 NULL로 평가됩니다. 따라서, 불필요한 결과를 배제하기 위해 location IS NOT NULL 조건을 추가하여 명확히 NULL 값을 제외하는 것이 좋습니다.
관련된 질문과 유용한 설명을 제공하는 답변이 있어 공유드립니다. 이는 JOIN 연산 시 NULL 값을 처리하는 데 있어 동일한 논리로 적용될 수 있습니다:
- LEFT JOIN 사용 시 유의점과 NULL 처리 에 대한 설명이 포함된 답변으로,
NULL처리와 관련된 SQL 작동 방식을 이해하는 데 도움이 될 수 있습니다.
이해를 돕기 위해 쉽게 말하자면, 명시적으로 NULL 값을 제외하지 않으면 계획하지 않은 행이 결과에 포함될 수 있습니다. 따라서 IS NOT NULL 조건을 부가하여 불필요한 연산을 피하고 결과의 일관성을 유지하는 것이 중요한 이유입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
vs code
0
48
2
수업자료 다운
0
46
2
쿼리 화면 문의
0
70
2
4-5. 3번 문제 질
0
63
2
JOIN 1번 문제
1
73
2
battle 테이블 생성 시 생성 오류
0
67
1
5-6. 4번 문제 WHERE 조건의 위치 문의
0
64
2
5-6. 연습문제 4번, type2에 대해서는 고려하지 않아도 될까요?
1
68
2
battle table 오류
0
68
2
12강 집계 함수
0
48
1
2-6. 연습 문제 1~3번
0
49
1
안녕하세요! 11번 문제 query문에 관해 질문드립니다
0
49
1
2-6 #2 WHERE vs. HAVING절 사용 여부 차이
0
65
1
섹션 별 퀴즈
0
64
1
espanso 설치 완료 후 프로그램 실행 문제
0
102
2
Syntax에러
0
80
2
4-5. 1번 문제 TIMESTAMP 관련 질문
0
86
2
시각화 도구 사용
0
109
2
11번 문제 GROUP BY 사용하는 이유
0
98
1
big query 쿼리 결과 컬럼 폭
0
107
3
battle 스키마 조건 복사 파일이 열리지 않아요.
0
127
1
6-5 데이터 검증 결과 예시문제
0
78
2
battle 스키마 조건 복사붙여넣기용 자료
0
113
2
17번 문제 질문드립니다.
0
173
3

