Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Replication
- jmeter
- postgresql
- NOSQL
- DML
- opensource
- RDBMS
- 6.2.7
- mysql
- cdb
- mongo
- ncloud
- autovacuum
- 성능테스트
- InnoDB
- online ddl
- NCP
- Docker
- slack
- Connection
- zabbix
- Maria
- RDS
- REDIS
- MyISAM
- OD
- maxclients
- ROLLBACK
- vacuum
- Cloud DB for MySQL
Archives
- Today
- Total
개인 공부
AND / OR 논리 연산자 우선 순위 본문
반응형
음.. 이번에는 쿼리를 짤때 자주 사용되는 AND / OR 논리 연산에 대한 우선 순위에 대해 작성해보려고 합니다.
많은 분들이 잘 알고 계시겠지만 이 우선순위에 의해서 원하는 결과 값이 아닌 다른 값이 나올수 있다는 점!!!
AND / OR ?
- AND: 두 조건이 모두 참인 레코드를 검색
- OR : 두 조건중 하나라도 참인 레코드
예제
쿼리를 통해 AND / OR 연산자의 우선 순위를 보겠습니다.
1. 2페이지에 해당하는 데이터중 Title에 'Test'가 포함된 데이터
select * from (
select
rownum rn, bro, title, wirter
from board
where title like '%Test%' and rownum < =20
) A
where rn > 10;
2. title 이나 content 중에 'Test'라는 문자열이 있는 게시글
select
*
from
( select
rownum rn, bro, title, wirter
from board
where title like '%Test%' or content like '%Test%' and rownum <= 20
)
where rn > 10;
- 위의 구문을 보면 구문자체는 문제가 없지만 실제로 동작시켜보면 10개의 데이터가 아닌 많은 양이 데이터가 출력된다.
- 이유는 AND / OR의 연산자 우선순위에따라 실제로 실행될떄 아래와 같은 조건으로 실행이된다.
- “ROWNUM이 20보다 작거나 같으면서(AND) + Content가 ‘Test’이거나(OR) + Title이 ‘Test’라는 문자열이 있는 게시글
where title like '%Test%' or content like '%Test%' and rownum <= 20
##연산자 우선순위에 따라 아래처럼 구문이 실행된다.
where rownum <=20 and title like '%Test%' or content like '%Test%'
해결책
괄호( ) 를 사용하여 우선순이를 명확하게 해주자.
where ( title like '%Test%' or content like '%Test%' )
and rownum <= 20
반응형
'MySQL & Maria' 카테고리의 다른 글
log_slow_extra (0) | 2025.03.09 |
---|---|
[ DML ] Rollback 시간 산정 (0) | 2025.01.03 |
[ MySQL ] MyISAM to InnoDB (14) | 2023.05.26 |
[ MySQL ] CPU 부하 Query 모니터링 (10) | 2023.03.10 |
[ MySQL ] innodb_onlin_alter_log_max_size 중요성 (15) | 2023.02.27 |