SQL
SQL 연산자 우선 순위
Slow Motion~
2023. 3. 17. 15:19
728x90
맨처음 실행은 이랬고 순서대로 OR 과 AND를 할 거라고 생각했으나 type이 0이외에도 출력
SELECT * FROM TB_FAULT tf WHERE device = 3 OR device = 4 AND `type` = 0 ORDER BY write_time DESC
연산자의 순서는
- ()괄호
- NOT
- AND
- OR
따라서 이 문법은 실제로
(device = 3) OR ((device = 4) AND (`type` = 0))
이렇게 실행되고 있었던 것이다.
device 3은 그냥 다 조회했다.
해결은 간단하게 괄호를 써서 해결
SELECT * FROM TB_FAULT tf WHERE (device = 3 OR device = 4) AND `type` = 0 ORDER BY write_time DESC