--- tags: sql, LeetCode disqus: HackMD --- # 627. Swap Salary (資訊來自於`leetcode 627`[ Swap Salary](https://leetcode.com/problems/department-highest-salary/)) #### 交換工資  這是一個叫做Salary的主Table,裡面的資料欄位有【id】,【name】,【sex】,【salary】 id 是該表的主鍵列。 性別列是('m','f')類型的 ENUM 值。 該表包含有關員工的信息 ## 題目: 編寫一個 SQL 查詢以使用單個更新語句交換所有'f'和'm'值(即,將所有'f'值更改為'm',反之亦然),並且沒有中間臨時表。 請注意,您必須編寫單個更新語句,不要為此問題編寫任何選擇語句。 查詢結果格式如下例所示。 資料庫內容為下圖  而我們希望出來的結果為下面這樣  把性別原本是'm'的改變成'f'。 ## 解題方式: 第一種解題方式MS SQL Server ```sql= update Salary set sex = case when sex = 'm' then 'f' else 'm' end ``` 第二種解題方式MySQL ```sql= update Salary set sex = if(sex='m','f','m') ``` 解析: 題目要我們用單個更新語句來交換性別值,所以我們不用SELECT的方式來做更換,這邊可以用UPDATE直接去做值的更新,所以在加個判斷式去做判斷當性別值是'm'時轉成'f'其他的就是'm'。 By. @OtbmOtOMRzCEOxuIjDNc8A
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up