JOIN은 보통 외래 키인 조건을 매칭하여 두 테이블의 행을 결합합니다. 조인 유형은 상대편에 일치하는 행이 없는 행을 어떻게 처리할지 결정합니다.
JOIN은 보통 외래 키인 조건을 매칭하여 두 테이블의 행을 결합합니다. 조인 유형은 상대편에 일치하는 행이 없는 행을 어떻게 처리할지 결정합니다.
NULL로 반환됩니다.-- customers(id, name) orders(id, customer_id, total)
-- INNER: only customers who have at least one order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: every customer, even those with zero orders (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Classic use: find customers with NO orders
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- the LEFT JOIN's NULL side reveals the gap
WHERE에서 오른쪽 테이블을 필터링하면(예: WHERE o.total > 100) NULL > 100이 거짓이므로 LEFT JOIN이 슬그머니 INNER JOIN으로 되돌아갑니다. 일치하지 않는 행을 유지하려면 그런 조건을 ON 절에 두세요.실제 쿼리 대부분은 여러 테이블에 걸쳐 있으며, 잘못된 조인 유형은 조용히 행을 누락하거나 중복시킵니다 — 그럴듯한 결과를 반환하는 버그죠. LEFT JOIN + IS NULL이 "누락된" 행을 찾아내고, null 쪽에 대한 WHERE가 LEFT를 무효화한다는 것을 알면 보고서 오류 전반을 예방할 수 있습니다.
주니어부터 시니어까지 상세한 답변이 포함된 IT 면접 질문 라이브러리.
후원하기