給定乙個salary
表,如下所示,有m = 男性
和f = 女性
的值。交換所有的f
和m
值(例如,將所有f
值更改為m
,反之亦然)。要求只使用乙個更新(update)語句,並且沒有中間的臨時表。
注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。
例如:id
name
***salary1a
m25002b
f15003c
m55004d
f500
執行你所編寫的更新語句之後,將會得到以下表:
idname
***salary1a
f25002b
m15003c
f55004d
m500
雖然不知道為什麼這麼寫。。但自己寫的。。居然通過了。。
---- mysql ----
# write your mysql query statement below
update salary set *** =
case when *** = 'm' then 'f'
when *** = 'f' then 'm' end ---- 119ms
oracle
提交也可以通過,不過執行很慢,1151ms。
看到乙個神操作,通過ascii
碼轉換,再通過char
轉換為字串,666!
---- mysql ----
update salary set *** =
char(ascii('f') + ascii('m') - ascii(***)); ---- 118ms
還有通過異或運算得到結果的。
---- mysql ----
update salary set *** =
char(ascii(***)^ascii('f')^ascii('m')); ---- 120ms
異或運算:當2個相同的值進行異或運算,結果為0。
使用mysql
的if
函式,if(*** = 'm', 'f', 'm')
也可以。
---- mysql ----
update salary set *** =
if(*** = 'm', 'f', 'm');
使用oracle
的decode
函式。
---- oracle ----
update salary set *** =
decode(***, 'm', 'f', 'f', 'm');
使用update
和case...when...
進行動態將值設定成列。
通過ascii
碼轉換,再通過char
轉換為字串。
使用異或運算進行解答。
使用常規的if
和decode
進行解答。
Leetcode 627 交換工資
詳細見 leetcode 題目總結 sql 給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值 交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求使用乙個更新 update 語句,並且沒有中間臨時表。請注意,你必須編寫乙個 update 語句,不要編寫任何...
Leetcode627 交換工資(MySQL)
leetcode database 題目 sql架構 給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。例 id name salary 1 a ...
627 交換工資
給定乙個 salary 表,如下所示,有 m 男性 和 f 女性 的值。交換所有的 f 和 m 值 例如,將所有 f 值更改為 m,反之亦然 要求只使用乙個更新 update 語句,並且沒有中間的臨時表。注意,您必只能寫乙個 update 語句,請不要編寫任何 select 語句。例如 id nam...