쿼리 'SELECT foo FROM bar WHERE a = x AND b = y OR c = z'
이 주어지면이 쿼리는 어떻게 구문 분석됩니까?MySQL 논리 연산자
(a = x AND b = y) OR c = z
?
a = x AND (b = y OR c = z)
?
단순한 예이지만 AND/OR을 더 많은 검색어와 섞어서 사용한다면 어떨까요?
쿼리 'SELECT foo FROM bar WHERE a = x AND b = y OR c = z'
이 주어지면이 쿼리는 어떻게 구문 분석됩니까?MySQL 논리 연산자
(a = x AND b = y) OR c = z
?
a = x AND (b = y OR c = z)
?
단순한 예이지만 AND/OR을 더 많은 검색어와 섞어서 사용한다면 어떨까요?
(a = x 및 Y = B) 또는 C = Z
http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html
AND precedence 높다.
MySQL 매뉴얼 섹션 11.2.1. 운영자 우선 순위 : http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html
AND는 OR보다 우선합니다. (a = x AND b = y) 또는 c = z는 동일한 표현식입니다.
이미 대답 한대로 AND
이 우선하고 우선 구문 분석됩니다.
저는 여러분이 실제로 찾고있는 대답이 다음과 같다고 생각합니다 : SELECT foo FROM bar WHERE a = x AND b = y OR c = z
과 같은 쿼리를 작성하지 마십시오.
SELECT foo FROM bar WHERE ((a = x AND b = y) OR c = z)
인 경우 또는 SELECT foo FROM bar WHERE (a = x AND (b = y OR c = z))
인 경우 처음부터 그렇게 작성하십시오.
다음 주 (또는 월 또는 연도)에 쿼리를 다시 보았을 때 알아 내야 할 필요가 없으므로 나중에 유지 보수 담당자에게도 도움이됩니다.
좋아,하지만 뭔가가 있다면 a = b AND c = d OR e = f OR g = h AND i = j 'AND'문을 괄호로 묶을 뿐인가요? – Matthew
꽤 많이 : (a = b AND c = d) 또는 e = f OR (g = h AND i = j) –