본문 바로가기
SQL

[DB Query] SELECT 결과에 따라 조건문 바꾸기

by 펜네임 2020. 3. 3.

 

SELECT 데이터 조회 결과에 따라

WHERE 조건문을 바꾸고 싶을 때 쓰는 코드.

 

예제 EXAMPLE

데이터 레코드의 WRITE_GBUN(게시글 구분)이 '1'이라는 특정값일 때를 제외하곤

USER_ID(작성자 id) 조건을 주지 않고 검색하고 싶을 경우.

<select id="funcName" parameterType="Map" resultType="egovMap">
	SELECT 
		BOARD_ID, <!--게시판 id-->
		TEAM_ID, <!--팀 id-->
		WRITE_SEQ, <!--게시글 순번-->
		USER_ID, <!--작성자 id-->
		USER_NAME, <!--작성자 이름-->
		SUBJECT, <!--게시글 제목-->
		WRITE_DESC, <!--게시글 내용-->
		WRITE_GBUN <!--게시글 구분-->
	FROM WRITING
	WHERE BOARD_ID = #{boardId} 
 		<if test="writer != '' and writer != null">
        	AND
			( 
				(WRITE_GBUN = '1' AND USER_ID = #{writer})
				OR 
				(WRITE_GBUN != '1') 
			)
		</if>
	ORDER BY CHAT_SEQ, TEAM_ID
</select>

 

WHERE절에 AND를 추가해주고 이어지는 조건절 안에 한 번 더 OR를 줘서

검색된 레코드의 WRITE_GBUN이 1일때는 작성자 id 조건을 같이 주고,

1이 아닐 때는 비워서 모든 작성자들이 선택되게 함

댓글