LeetCode 数据库面试题 – 交换工资(Swap Salary)

用一条 UPDATE 语句,在不使用中间临时表的情况下,将 salary 表中 sex 的值反转。

原题

Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and m values (i.e., change all f values to m and vice versa) with a single update query and no intermediate temp table.

For example:

idnamesexsalary
1Am2500
2Bf1500
3Cm5500
4Df500

After running your query, the above salary table should have the following rows:

idnamesexsalary
1Af2500
2Bm1500
3Cf5500
4Dm500

SQL

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

OR

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