【LeetCode-SQL每日一练】—— 627. 变更性别
🎈寫在前面
🙋?♂?大家好呀,我是超夢。大家可以叫我小夢~
又到了練習(xí)SQL的時候啦!一起來學(xué)習(xí)吧!
🙋?♂? 小伙伴們?nèi)绻趯W(xué)習(xí)過程中有不明白的地方,歡迎評論區(qū)留言提問,小夢定知無不言,言無不盡。
目錄
🌎SQL題目概述
🌎解題思路
🌎方法實現(xiàn)
🌎代碼測試
🌎知識點(diǎn)小結(jié)
🌎SQL題目概述
LeetCode原題鏈接
Salary 表:
+-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | name | varchar | | sex | ENUM | | salary | int | +-------------+----------+id 是這個表的主鍵。 sex 這一列的值是 ENUM 類型,只能從 ('m', 'f') 中取。 本表包含公司雇員的信息。🚀題目:
請你編寫一個 SQL 查詢來交換所有的 'f' 和 'm' (即,將所有 'f' 變?yōu)?'m' ,反之亦然),僅使用 單個 update 語句 ,且不產(chǎn)生中間臨時表。
注意:你必須僅使用一條 update 語句,且 不能 使用 select 語句。
查詢結(jié)果如下例所示。
🚩示例 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' 變?yōu)?'f' 。 (2, B) 和 (4, D) 從 'f' 變?yōu)?'m' 。🌎解題思路
題目中僅使用 單個 update 語句 ,且不產(chǎn)生中間臨時表。看似不可能寫出來,其實思路很簡單。
如果 sex = 'm' , 那么就把sex設(shè)置為 f ,否則將sex設(shè)置為 m 。
我們可以通過case...when 流程控制語句實現(xiàn)或者使用if()函數(shù)來是現(xiàn)實sex的性別對換。
這樣小夢這里就有兩種解題思路,如果小伙伴們還有其他解題思路,歡迎評論區(qū)留言交流~
🌎方法實現(xiàn)
🌈方法一
update salary set sex = case sex when 'm' then 'f' else 'm' end;🌈方法二
update salary set sex = if(sex = 'm', 'f', 'm');🌎代碼測試
🌈方法一:
執(zhí)行代碼,開始測試
與測試結(jié)果一致,測試成功!
🌈方法二:
執(zhí)行代碼,開始測試
?與測試結(jié)果一致,測試成功!
🌎知識點(diǎn)小結(jié)
🌀case when:
CASE [col_name] WHEN [value1] THEN [result1]…ELSE [default] END
CASE WHEN [expr] THEN [result1]…ELSE [default] END
🌀if()函數(shù):
????????IF函數(shù)根據(jù)條件的結(jié)果為true或false,返回第一個值,或第二個值。
IF(condition, value_if_true, value_if_false)總結(jié)
以上是生活随笔為你收集整理的【LeetCode-SQL每日一练】—— 627. 变更性别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: COVID-19 肺炎疫情数据实时监控(
- 下一篇: mysql把一个数据库中的数据复制到另一