[문제]

Table: Salary

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.
 


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.

The query result format is in the following example.

 

Example 1:

Explanation: 
(1, A) and (3, C) were changed from 'm' to 'f'.
(2, B) and (4, D) were changed from 'f' to 'm'.

 

 

[문제링크]

https://leetcode.com/problems/swap-salary/

 


[문제 설명]

> UPDATE를 이용하여 f와 m을 바꾸기 (성별 바꾸기)

 

[나의 풀이]

UPDATE salary
    SET sex = IF(sex='m' ,'f', 'm')

[설명]

1. IF문

IF(sex = 'm', 'f', 'm')

> sex라는 칼럼이 m일때는 f로 작성하고 m이 아닐 때( f일 때)는 m으로 작성한다.

 

2. UPDATE

> UPDATE 뒤에는 TABLE명을 쓰고 SET 뒤에는 수정할 컬럼을 작성한다.

 


 

[다른 풀이]

UPDATE salary
    SET sex = CASE WHEN sex='m' THEN 'f'
                    ELSE 'm'
                    END

[설명]

1. CASE WHEN / THEN

> [나의 풀이]에서 IF문 대신 CASE WHEN/ THEN을 사용하였다.

IF(sex = 'm', 'f', 'm')
-- 아래 CASE WHEN문은 위의 IF문과 같다
CASE WHEN sex='m' THEN 'f'
                    ELSE 'm'
                    END

> sex라는 칼럼이 m일때는 f로 작성하고 m이 아닐 때( f일 때)는 m으로 작성한다.

 

 

2. UPDATE

> UPDATE 뒤에는 TABLE명을 쓰고 SET 뒤에는 수정할 컬럼을 작성한다.

 

 

 

+ Recent posts