LeetCode 627. 交换工资 左手的ㄟ右手 2022-12-06 15:11 94阅读 0赞 给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。 注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。 例如: <table> <thead> <tr> <th>id</th> <th>name</th> <th>sex</th> <th>salary</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>A</td> <td>m</td> <td>2500</td> </tr> <tr> <td>2</td> <td>B</td> <td>f</td> <td>1500</td> </tr> <tr> <td>3</td> <td>C</td> <td>m</td> <td>5500</td> </tr> <tr> <td>4</td> <td>D</td> <td>f</td> <td>500</td> </tr> </tbody> </table> 运行你所编写的更新语句之后,将会得到以下表: <table> <thead> <tr> <th>id</th> <th>name</th> <th>sex</th> <th>salary</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>A</td> <td>f</td> <td>2500</td> </tr> <tr> <td>2</td> <td>B</td> <td>m</td> <td>1500</td> </tr> <tr> <td>3</td> <td>C</td> <td>f</td> <td>5500</td> </tr> <tr> <td>4</td> <td>D</td> <td>m</td> <td>500</td> </tr> </tbody> </table> 法一:使用mysql的if函数: update salary set sex = if(sex = 'm', 'f', 'm'); 法二:使用ascii码求和相减: update salary set sex = char(ascii('m') + ascii('f') - ascii(sex)); // 以下原理相同 update salary set sex = char(ascii('m') ^ ascii('f') ^ ascii(sex)); 法三:使用case when语句: update salary set sex = case sex when 'm' then 'f' else 'm' end;
还没有评论,来说两句吧...