아래 조건을 만족하는 쿼리를 작성한다고 가정해봅시다.
“국내(KR) 고객 중에서
최근 30일 내 구매 이력이 있거나,
VIP 등급 고객”
여러 조건인데 OR 조건이 있으므로, 괄호 사용에 유의해야 합니다.
| customer_id | region | last_purchase | grade |
|---|---|---|---|
| 1 | KR | 2025-10-20 | VIP |
| 2 | KR | 2025-09-10 | BASIC |
| 3 | US | 2025-10-05 | VIP |
| 4 | KR | NULL | BASIC |
| 5 | JP | 2025-10-15 | BASIC |
SELECT *
FROM customers
WHERE region = 'KR'
AND last_purchase >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
OR grade = 'VIP';
SQL은 AND가 OR보다 우선순위가 높습니다.
즉, 아래처럼 해석됩니다 👇🏻
WHERE (region = 'KR'
AND last_purchase >= DATE_SUB(CURDATE(), INTERVAL 30 DAY))
OR grade = 'VIP';
➡️ 이 경우 지역이 KR이 아니더라도 VIP면 전부 포함됩니다.
결과 👇🏻
| customer_id | region | last_purchase | grade |
|---|---|---|---|
| 1 | KR | 2025-10-20 | VIP |
| 3 | US | 2025-10-05 | VIP |
→ 미국(US) VIP 고객(3번)이 포함돼버렸어요.
SELECT *
FROM customers
WHERE region = 'KR'
AND (last_purchase >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
OR grade = 'VIP');
결과 👇🏻
| customer_id | region | last_purchase | grade |
|---|---|---|---|
| 1 | KR | 2025-10-20 | VIP |
➡️ 이제 “국내 고객”만 필터링되면서
그중에서 최근 구매 or VIP 조건이 적용됩니다.
✔️ 다중 조건에서는 실제 의도에 맞게 괄호를 정확히 작성하세요.