목차
MySQL OR/AND 우선 순위
설명
해석
우선순위 문제 및 해결 방법
데이터 베이스 MySQL 튜토리얼 연산자 우선 순위는 쿼리에서 MySQL의 'OR' 및 'AND' 논리에 어떤 영향을 줍니까?

연산자 우선 순위는 쿼리에서 MySQL의 'OR' 및 'AND' 논리에 어떤 영향을 줍니까?

Dec 14, 2024 pm 10:10 PM

How Does Operator Precedence Affect MySQL's `OR` and `AND` Logic in Queries?

MySQL OR/AND 우선 순위

MySQL에서는 OR 및 AND와 같은 논리 연산자의 연산 순서에 따라 복잡한 쿼리의 해석이 결정됩니다. 이 문서에서는 우선순위 규칙과 이것이 쿼리 결과에 미치는 영향을 설명합니다.

설명

MySQL 문서는 다음과 같이 연산자 우선순위에 대한 포괄적인 목록을 제공합니다.

INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=, >=, >, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
= (assignment), :=
로그인 후 복사

에 따르면 이 우선 순위 계층 구조에 따라 다음 쿼리가 해석됩니다. as:

SELECT *
FROM tablename
WHERE
    display = 1
    OR (
        display = 2 AND content LIKE "%hello world%"
    )
    OR tags LIKE "%hello world%"
    OR title = "%hello world%"
로그인 후 복사

해석

위 쿼리는 다음 중 하나에 해당하는 행을 찾습니다.

  • display = 1
  • display = 2이고 content에 다음이 포함됩니다. "hello world"
  • 태그에는 "hello"가 포함되어 있습니다. world"
  • 제목에 "hello world"가 포함되어 있습니다

WHERE 절은 다음 순서로 평가됩니다.

  1. 디스플레이가 먼저 확인됩니다.
  2. 디스플레이가 1이 아닌 경우 두 번째 하위 쿼리가 평가됩니다.
  3. 하위 쿼리에서 디스플레이가 2와 같은지 확인합니다. true이면 콘텐츠에 "hello world"가 있는지 확인합니다.
  4. 마지막으로 태그와 제목의 나머지 절을 OR 연산자로 연결하여 평가합니다.

우선순위 문제 및 해결 방법

명확한 해석을 위해 명시적으로 괄호를 사용하는 것이 좋습니다. 예:

SELECT *
FROM tablename
WHERE
    ((display = 1) OR (display = 2)) AND
    ((content LIKE "%hello world%") OR (tags LIKE "%hello world%") OR (title LIKE "%hello world%"))
로그인 후 복사

이 쿼리는 다음 조건 중 하나라도 충족하는 경우 행을 가져옵니다.

  • 표시가 1 또는 2와 같음
  • 콘텐츠, 태그 또는 제목에 "hello world"가 포함되어 있습니다

위 내용은 연산자 우선 순위는 쿼리에서 MySQL의 'OR' 및 'AND' 논리에 어떤 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Docker에서 MySQL 메모리 사용을 줄입니다 Docker에서 MySQL 메모리 사용을 줄입니다 Mar 04, 2025 pm 03:52 PM

Docker에서 MySQL 메모리 사용을 줄입니다

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까? Mar 19, 2025 pm 03:51 PM

Alter Table 문을 사용하여 MySQL에서 테이블을 어떻게 변경합니까?

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다. Mar 04, 2025 pm 04:01 PM

MySQL의 문제를 해결하는 방법 공유 라이브러리를 열 수 없습니다.

sqlite 란 무엇입니까? 포괄적 인 개요 sqlite 란 무엇입니까? 포괄적 인 개요 Mar 04, 2025 pm 03:55 PM

sqlite 란 무엇입니까? 포괄적 인 개요

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음) Mar 04, 2025 pm 03:54 PM

Linux에서 MySQL을 실행합니다 (Phpmyadmin이있는 Podman 컨테이너가 포함되지 않음)

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드 Mar 04, 2025 pm 03:49 PM

MacOS에서 여러 MySQL 버전을 실행 : 단계별 가이드

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까? 일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까? Mar 18, 2025 pm 12:00 PM

일반적인 취약점 (SQL 주입, 무차별 적 공격)에 대해 MySQL을 어떻게 보호합니까?

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까? Mar 18, 2025 pm 12:01 PM

MySQL 연결에 대한 SSL/TLS 암호화를 어떻게 구성합니까?

See all articles