
SELECT m.member_id, m.name, g.grade
FROM members m
CROSS JOIN grades g
WHERE m.member_id IS NULL
UNION ALL
SELECT m.member_id, m.name, g.grade -- ❌ g가 뭔데?
FROM members m
WHERE m.member_id IS NOT NULL
에러 이유: grades 테이블 JOIN 안 했는데 g.grade 썼음!
SELECT m.member_id, m.name, g.grade
FROM members m
CROSS JOIN grades g
WHERE m.member_id IS NULL
UNION ALL
SELECT m.member_id, m.name, NULL AS grade -- ✅ NULL로 자리 채우기
FROM members m
WHERE m.member_id IS NOT NULL
NULL AS 컬럼명-- 테이블에서 안 가져올 때
SELECT col1, col2, NULL AS col3
-- ❌ grades 테이블 없는데 g.grade 쓰면 에러
FROM members m
WHERE m.member_id IS NOT NULL
... g.grade -- g가 뭔데?
-- ✅ 그냥 NULL 써야 함
... NULL AS grade
| 상황 | 처리 방법 |
|---|---|
| 특정 행만 확장 | WHERE 조건 + CROSS JOIN |
| 나머지 행 유지 | 별도 SELECT (JOIN 없이) |
| 컬럼 수 맞추기 | NULL AS 컬럼명 |
| 둘 합치기 | UNION ALL |
문제 유형: NULL인 product_id 행에 0, 1, 2 값 넣어서 확장
-- NULL 행 → 확장
SELECT product_id, product_name, code
FROM products
CROSS JOIN status_codes
WHERE product_id IS NULL
UNION ALL
-- NOT NULL 행 → 그대로
SELECT product_id, product_name, NULL AS code
FROM products
WHERE product_id IS NOT NULL
오늘의 교훈: 테이블 안 썼으면 그 테이블 alias도 못 쓴다! 🔥
