Posts

SQL Study List

SQL을 작성하면서 새롭게 알게 된 사실이나 알아두어야 하는 내용을 정리했다.

1. case - when 조건에 해당하지 않을 경우, 어떤 값 반환될까?

테이블 : TEST | 이름 | 유형 | KEY | comment | | :—: | :—–: | :—: | :——– | | id | int | PK | 테이블 id | | name | varchar | | 이름 | | time | varchar | | 총 시간 | | pos | varchar | | 현재 위치 |

위와 같은 테이블이 있다고 가정하자.
특정 버튼을 누르면 아래의 sql이 실행된다.

1
2
3
4
5
6
7
8
update test_table
set pos =
	case
		when ifnull(time, 0) = 0 then 0
		when ifnull(pos, 0) > ifnull(time, 0) then pos
		when ifnull(time,0) > ifnull(pos, 0) then time
    end
where id = 1;

만약 pos와 time이 100으로 같다면, case의 세 조건 중 어느 곳에도 해당되지 않기 때문에 NULL을 반환한다. 즉, pos에는 NULL이 할당된다.

이 포스트는 저작권자의 CC BY 4.0 라이센스를 따릅니다.