SQL 多行更新

假设数据库中有如下名为user表格:

id no name gender room
1 BB1344 张三1 112
2 BB1345 张三2 113
3 BB1346 张三3 114
4 BB1347 张三4 115
5 BB1348 李四1 115
6 BB1349 李四2 115
7 BB1350 李四3 115
8 BB1351 李四4 115
9 BB1352 李四5 116
10 BB1353 李四6 116

现在我们想根据学号(no)中的前四位填充class字段。有如下几种做法。

一:通过临时表。步骤如下:

create table temp select id, substring(no, 1, 4) as class from user;	//创建临时表
update temp t join user u using(id) set u.class = t.class;	 //利用内连接更新user表
drop table temp;

二:直接利用update语句更新:

update user set class = substring(no, 1, 4);

注意:substring的第一个参数是要截取的字符串主串,第二个参数是启示位置,第三个参数是要截取的子串的长度。在MySQL中,subsring中字符串的起始位置是1而不是0!切记切记!

常用的字符串处理函数还有lengthconcat等。

update语句中还可以嵌套case语句,根据条件更新对应的值。

参考:MySQL常用字符串操作函数大全,以及实例

update执行一次SQL查询,UPDATE多行记录


你可能感兴趣的:(sql,mysql,数据库,substring)