題目:
Salary 表:
±------------±---------+
| Column Name | Type |
±------------±---------+
| id | int |
| name | varchar |
| sex | ENUM |
| salary | int |
±------------±---------+
id 是這個表的主鍵(具有唯一值的列)。
sex 這一列的值是 ENUM 類型,只能從 (‘m’, ‘f’) 中取。
本表包含公司雇員的信息。
請你編寫一個解決方案來交換所有的 ‘f’ 和 ‘m’ (即,將所有 ‘f’ 變為 ‘m’ ,反之亦然),僅使用 單個 update 語句 ,且不產生中間臨時表。
注意,你必須僅使用一條 update 語句,且 不能 使用 select 語句。
結果如下例所示。
示例 1:
輸入:
Salary 表:
±—±-----±----±-------+
| id | name | sex | salary |
±—±-----±----±-------+
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
±—±-----±----±-------+
輸出:
±—±-----±----±-------+
| id | name | sex | salary |
±—±-----±----±-------+
| 1 | A | f | 2500 |
| 2 | B | m | 1500 |
| 3 | C | f | 5500 |
| 4 | D | m | 500 |
±—±-----±----±-------+
解釋:
(1, A) 和 (3, C) 從 ‘m’ 變為 ‘f’ 。
(2, B) 和 (4, D) 從 ‘f’ 變為 ‘m’ 。
解答:
update Salary set sex = (case when sex = 'm' then 'f' else 'm' end)