[SQL] 다중 조건에서는 괄호 작성에 유의하기

Unit·2025년 10월 28일

SQL

목록 보기
43/59

아래 조건을 만족하는 쿼리를 작성한다고 가정해봅시다.

“국내(KR) 고객 중에서
최근 30일 내 구매 이력이 있거나,
VIP 등급 고객”

여러 조건인데 OR 조건이 있으므로, 괄호 사용에 유의해야 합니다.


📄 예시 데이터

customer_idregionlast_purchasegrade
1KR2025-10-20VIP
2KR2025-09-10BASIC
3US2025-10-05VIP
4KRNULLBASIC
5JP2025-10-15BASIC

🖥️ SQL 예시 (괄호 없이 작성한 경우)

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_idregionlast_purchasegrade
1KR2025-10-20VIP
3US2025-10-05VIP

→ 미국(US) VIP 고객(3번)이 포함돼버렸어요.


✅ 올바른 쿼리

SELECT *
FROM customers
WHERE region = 'KR'
  AND (last_purchase >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
       OR grade = 'VIP');

결과 👇🏻

customer_idregionlast_purchasegrade
1KR2025-10-20VIP

➡️ 이제 “국내 고객”만 필터링되면서
그중에서 최근 구매 or VIP 조건이 적용됩니다.


정리

✔️ 다중 조건에서는 실제 의도에 맞게 괄호를 정확히 작성하세요.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글