/////
Search
Duplicate

Swap Salary

태그
UPDATE
한 번 더 체크

문제

Table: Salary
+-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | name | varchar | | sex | ENUM | | salary | int | +-------------+----------+ id is the primary key for this table. The sex column is ENUM value of type ('m', 'f'). The table contains information about an employee.
Plain Text
복사
Write an SQL query to swap all 'f' and 'm' values (i.e., change all 'f' values to 'm' and vice versa) with a single update statement and no intermediate temporary tables.
Note that you must write a single update statement, do not write any select statement for this problem.

예시

Input: Salary table: +----+------+-----+--------+ | id | name | sex | salary | +----+------+-----+--------+ | 1 | A | m | 2500 | | 2 | B | f | 1500 | | 3 | C | m | 5500 | | 4 | D | f | 500 | +----+------+-----+--------+ Output: +----+------+-----+--------+ | id | name | sex | salary | +----+------+-----+--------+ | 1 | A | f | 2500 | | 2 | B | m | 1500 | | 3 | C | f | 5500 | | 4 | D | m | 500 | +----+------+-----+--------+ Explanation: (1, A) and (3, C) were changed from 'm' to 'f'. (2, B) and (4, D) were changed from 'f' to 'm'.
Plain Text
복사

정답

UPDATE salary SET sex = CASE sex WHEN 'm' THEN 'f' ELSE 'm' END;
SQL
복사

풀이

UPDATE문 수행시 SET 절에 CASE를 사용하는 문제이다.
CASE를 사용하면 특정 조건을 주어서 값을 변경하는 것이 가능하다.
예를 들어서 어떤 경우에는 컬럼의 값을 a로 변경하고 어떤 경우에는 컬럼의 값을 b로 변경하고 싶다면 SET 컬럼명 = CASE ... 을 사용하면 된다.