>데이터 베이스 >MySQL 튜토리얼 >SQL의 'AND' 및 'OR' 연산자의 우선순위가 다르며 이것이 쿼리 결과에 어떤 영향을 줍니까?

SQL의 'AND' 및 'OR' 연산자의 우선순위가 다르며 이것이 쿼리 결과에 어떤 영향을 줍니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-22 21:57:13260검색

Do SQL's `AND` and `OR` Operators Have Different Precedence, and How Does This Affect Query Results?

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 연산자의 우선순위는 다음과 같습니다.

  • AND 연산자는 OR 연산자보다 우선순위가 높습니다.

OR 연산자 오른쪽에 AND 연산자가 나타나더라도 먼저 평가된다는 뜻입니다.

문에 우선순위 적용

주어진 진술에서:

  • 첫 번째 문은 AND 연산자만 사용하므로 우선순위가 간단합니다.
  • 두 번째 문은 OR와 AND 연산자의 조합을 사용합니다. 여기서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.