LeetCode 627 交換工資

2022-09-17 13:24:14 字數 1688 閱讀 4543

給定乙個salary表,如下所示,有m = 男性f = 女性的值。交換所有的fm值(例如,將所有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。

使用mysqlif函式,if(*** = 'm', 'f', 'm')也可以。

---- mysql ----

update salary set *** =

if(*** = 'm', 'f', 'm');

使用oracledecode函式。

---- oracle ----

update salary set *** =

decode(***, 'm', 'f', 'f', 'm');

使用updatecase...when...進行動態將值設定成列。

通過ascii碼轉換,再通過char轉換為字串。

使用異或運算進行解答。

使用常規的ifdecode進行解答。

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...