mysql更新多表数据,多条数据

更新多条 单列记录 语法:
update tablename set 
	myfield = case id
		when 1 then 'value1'
		when 2 then 'value2'
		...
		when n then 'valuen'
	end
	where id in (1,2,...,n);
注:myfield是是你需要更改的字段名称,如果id等于1就把value1的赋给这条记录的这个列上,后边依次往下走。

现有学生表 name:姓名,class:班级
在这里插入图片描述
示例:修改student表,更改所有人的班级,id为1就改为高二一班,id为2就改为高二二班,以此类推。

sql:
update student set 
  class = case id 
	 when 1 then '高二一班' 
	 when 2 then '高二二班' 
	 when 3 then '高二三班' 
	 when 4 then '高二四班' 
	 when 5 then '高二五班' 
  end 
where id in (1,2,3,4,5);

执行成功,这是修改之后的数据
在这里插入图片描述

  class = case id 
	 when 1 then '高二一班' 
	 when 2 then '高二二班' 
	 when 3 then '高二三班' 
	 when 4 then '高二四班' 
	 when 5 then '高二五班' 
  end 
 这一段我的理解是:如果id 等于1 就把'高二一班' 给赋值到这一条记录的class字段上,后边的以此类推。
更新多条 多列记录 语法:
update tablename set 
	myfield1 = case id
		when 1 then 'value1'
		when 2 then 'value2'
		...
		when n then 'valuen'
	end
	myfield2 = case id
		when 1 then 'value1'
		when 2 then 'value2'
		...
		when n then 'valuen'
	end
	...
	myfieldn = case id
		when 1 then 'value1'
		when 2 then 'value2'
		...
		when n then 'valuen'
	end
	where id in (1,2,...,n);
注:myfield是你需要更改的各个字段名称,只是把修改单列变成了多列,这里就不写示例了。
更新多表记录 语法:
update t1,t2,tn set t1.field1=value1,tn.fieldn=valuen [where condition];

表信息
在这里插入图片描述
示例:把学生表id为1的名称修改为海王,和他关联的总分和平均都改为0

sql:
update student,score set 
	  student.name = '海王',
	  score.fraction='0',
	  score.average=0 
  where 
  student.id = score.sid and student.id = 1;

执行成功,这是修改之后的数据
在这里插入图片描述

注:sql语句中的第一个where条件student.id = score.sid,在这里是两表关联

不写关联条件的写法,(在这里用了别名)

sql:
update student as s1,score as  s2 set 
      s1.name='海娃',
      s2.fraction='60' 
  where s1.id=1 and s2.sid = 1;

执行成功,这是修改之后的数据
在这里插入图片描述

注:where条件中不关联,那就要针对每一个表写条件,如果不写的话后果很严重(虽然我也不知道会发生什么);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值