MySQL 8.0 의 연산자 우선순위 (Operator Precedence)
개발을 하면서 AND조건과 OR조건을 함께 사용하다보면 굉장히 혼란스러워질때가 간혹 있다. 내 논리로 예상한 결과값과 실제 MySQL이 검색을 수행한 결과가 다른 건 MySQL이 연산자 우선순위에 따라 처리하기 때문이다. No Operator 1 INTERVAL SELECT DATE_ADD('2021-07-01', INTERVAL 5 DAY); 과 같이 DATE 연산에 사용되는 연산자 2 BINARY, COLLATE 문자열 비교시 사용하는 연산자 3 ! 4 - (unary minus), ~ (unary bit minus) 5 ^ 6 *, /, DIV, %, MOD 7 -, + 8 9 & 10 ! 11 =, , >=, OR 의 순서로 쿼리를 실행한다는 것을 유의해야 한다. 이렇게는 조금 감이 잡히지 않아...