Description
Table: Salary
| Column Name | Type |
|---|---|
| id | int |
| name | varchar |
| sex | ENUM |
| salary | int |
idis the primary key for this table.- The
sexcolumn is ENUM value of type (’m’, ‘f’). - The table contains information about an employee.
Problem Statement
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:
Input:
Salarytable:
| 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’.
Solution
The problem is asking us to swap male and females in a single statement. This can be done using IF and CASE WHEN statements.
1UPDATE Salary
2 SET sex = CASE WHEN sex = 'm' THEN 'f' ELSE 'm' END;
Using IF statement, it will look even simpler.
1UPDATE Salary
2 SET sex = IF(sex = 'm', 'f', 'm');


Comments