case when 作为条件_图解面试题:如何按条件修改数据?

4f37e3aa5602d6eca6f56449850cf344.png

​【题目】

下图表名是“班级表”,请将班级中所有的1班、2班交换,0班变为3班。要求只使用更新语句(update),不要使用select语句。

c314a729982a6f0ad717e33c8e8e96fb.png

【解题思路】

1. 题目要求按条件更换列中的内容,“条件”我们想到的是sql里的case表达式。

2. case...when...的使用方法在《从零学会SQL:多表查询》里有讲过:

174e23e46348e46ede1730921085eeea.png

3. 更新语句时需要用到update语句,update语句使用方法如下:

update 表名set 列名 = 修改后的值;

【解题步骤】

1.确定case...when...语句中的内容

第一个条件是1班换为2班,第二个条件是2班换为1班,最后剩下的0班全部变成3班,语句如下:

case 班级 when 1 then 2 #将1换为2 when 2 then 1 #将2换为1 else 3 #剩下值(0)换为3end

2. 因为本题要求不能使用select语句,而是直接使用update将表内数据更新。结合上面提到的update语句,本题的答案如下:

update 班级表set 班级 = (case 班级 when 1 then 2 when 2 then 1 else 3 end);

查询更新完的班级表:已经更新成功。

5eab863d057248d2301bad339946760a.png

【本题考点】

1)一般在做SQL面试题时,大部分都是使用select语句完成。但在工作中,也会经常遇到要更新数据的情况。本题考察对update语句的掌握。

2)考察如何将业务条件用case表达式写出来。

【举一反三】

1. 在遇到需要将表内某列特定值替换成其他值时,记住case表达式如何使用。

2. 本题如果只是要求查询的话,使用select语句即可:

select (上面的case表达式) from 表名

3. 需要直接更新表中的数据的情况,熟记update语句。但要注意,在使用update更新表数据前,最好先将原表备份。

4. “按条件修改表数据”的应用例题

如下图所示的salary表,有m = 男性和f = 女性的值。交换所有的f和m的值(将所有f更改为m,m改为f)。要求只使用update的语句。

dd3d5ca2b325f47cf12961d2020d4e09.png

参考答案:

update salaryset sex = (case sex when 'm' then 'f' else 'm' end);

运行结果:

3f7135cc746b1e6c84a9f5dafaac9f5d.png

推荐:如何从零学会SQL?

c2681fa47bd0c7904fa144e65fe0a011.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值