Description

Table: Salary

Column NameType
idint
namevarchar
sexENUM
salaryint
  • 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.

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:

  • Salary table:
idnamesexsalary
1Am2500
2Bf1500
3Cm5500
4Df500

Output:

idnamesexsalary
1Af2500
2Bm1500
3Cf5500
4Dm500

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');