STUDY/DBMS

[SQL] WHERE 1=1을 사용하는 이유

nnh 2023. 2. 22. 11:12
728x90

WHERE 1=1은 조건문에서 항상 참을 의미한다.

AND 조건을 자유자재로 넣고 빼기 위해 사용한다.

간단한 예제를 통해 살펴보자.

 

 

 

SELECT *
FROM User
WHERE userName LIKE '김%'
AND userRole = 1;

 

위 쿼리문의 두가지 조건 중 userName LIKE '김%' 조건을 주석처리하고자 할 때

 

 

 

SELECT *
FROM User
-- WHERE userName LIKE '김%'
AND userRole = 1;

 

위와 같이 WHERE 명령어까지 주석처리하면 오류가 발생한다.

 

 

 

SELECT *
FROM User
-- WHERE userName LIKE '김%'
WHERE userRole = 1;

 

그렇다면 위의 쿼리문처럼 원하는 조건을 주석 처리하고 AND를 WHERE로 바꿔주어야 하는데

조건이 한두개라면 귀찮음을 감수하고 일일이 바꿔도 되지만, 조건이 무수히 많다면 번거로운 일이 될것이다.

 

 

 

이때 WHERE 1=1 조건을 사용하면 보다 쉽게 주석을 처리할 수 있고, 디버깅도 수월해진다.

즉, 동적으로 SQL툴에서 쿼리를 작성할 때 유용하다.

 

 

 

SELECT *
FROM User
WHERE 1=1
-- AND userName LIKE '김%'
AND userRole = 1;

 

위 코드처럼 WHERE 1=1을 선언하면 명령어를 별도로 변경할 필요없이 AND로 연결된 조건들 중 원하는 조건을 주석 처리할 수 있다.

 

 

 

SELECT *
FROM User
<WHERE>
	<if test="userName != null and userName != ''">
		AND userName LIKE '김%'
    </if>
    <if test="userRole != null and userRole != ''">
		AND userRole = 1;
    </if>
</WHERE>

 

MyBatis에서는 <where> 태그로 조건을 처리할 수 있는데, 위 쿼리문처럼 <where> 태그 내부에서 조건태그 <if>를 사용한다면 MyBatis에서 자동으로 질의 조건에 따라 WHERE 조건을 생성하거나 생략한다.

 

 

 

참고)

https://ssd0908.tistory.com/entry/MYSQL-WHERE-11-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD%EC%9C%BC%EB%A1%9C%EB%8A%94

 

[MYSQL] WHERE 1=1 사용하는 이유?? 주의사항으로는??

안녕하세요, 오늘은 MYSQL 질의문에서 WHERE 1=1을 사용하는 이유에 대해서 알아보도록 하겠습니다. 다른 개발자가 개발한 프로젝트를 유지 보수하거나, 처음 개발자로 입문하여 선임들이 작성한

ssd0908.tistory.com

 

728x90