집 >데이터 베이스 >MySQL 튜토리얼 >SQL의 'AND' 및 'OR' 연산자의 우선순위가 다르며 이것이 쿼리 결과에 어떤 영향을 줍니까?
SQL 논리 연산자 우선 순위: AND 및 OR
질문:
다음 SQL 문을 고려해 보세요.
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col IN (1,2,3,4,5) AND some_other_expr</code>
및
<code class="language-sql">SELECT [...] FROM [...] WHERE some_col IN (1,2,3) OR some_col IN (4,5) AND some_other_expr</code>
이 두 진술은 동일합니까? 동등하지 않다면 어떻게 우선순위를 정해야 합니까?
정답:
AND 및 OR 연산자의 우선순위
SQL에서는 연산자 우선 순위에 따라 WHERE 절의 논리 연산자가 평가되는 순서가 결정됩니다. AND 및 OR 연산자의 우선순위는 다음과 같습니다.
OR 연산자 오른쪽에 AND 연산자가 나타나더라도 먼저 평가된다는 뜻입니다.
문에 우선순위 적용
주어진 진술에서:
따라서 두 번째 진술은 다음과 같이 평가됩니다.
<code class="language-sql">WHERE (some_col IN (1,2,3)) OR (some_col IN (4,5) AND some_other_expr)</code>
진실표 검증
다음은 계산된 차이를 보여주는 진리표입니다.
some_col | some_other_expr | 语句 1 | 语句 2 |
---|---|---|---|
1 | 0 | False | True |
2 | 1 | True | True |
3 | 0 | False | True |
4 | 0 | False | False |
5 | 1 | False | True |
보시다시피, 이 두 진술의 진리값은 첫 번째 줄에서 다르며, 이는 동등하지 않음을 보여줍니다.
우선순위를 무시하려면 괄호를 사용하세요.
계산 순서를 변경하려면 괄호를 사용하여 기본 우선순위를 재정의할 수 있습니다. 예를 들어 두 번째 문을 첫 번째 문과 동일하게 만들려면 다음과 같이 작성합니다.
<code class="language-sql">WHERE (some_col IN (1,2,3) OR some_col IN (4,5)) AND some_other_expr</code>
위 내용은 SQL의 'AND' 및 'OR' 연산자의 우선순위가 다르며 이것이 쿼리 결과에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!