多表关联进行update更新数据

本文介绍了如何在MySQL中通过WHERE条件和JOIN方法来更新表关联的数据,提供了示例SQL语句,包括单表更新以及优化查询性能的技巧。同时,展示了如何针对大数据量的表进行更高效的更新操作。

在平常的工作中,我们经常会更新表的数据。常见的表关联更新数据例如用where条件进行表关联,或者用join进行表的连接更新表的数据。

1:创建测试表:


CREATE TABLE `student` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `student_no` bigint NOT NULL COMMENT '学号',
  `name` varchar(20) DEFAULT NULL COMMENT '名字',
  `address` varchar(100) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`),
  KEY `student_no` (`student_no`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `student_info` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `student_no` bigint NOT NULL COMMENT '学号',
  `hobbies` varchar(200) DEFAULT NULL COMMENT '兴趣爱好',
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2:将名字为“阿杜”同学的兴趣爱好改为跳舞:


通过where条件连接:

update student_info sto,student st 
set sto.hobbies = '跳舞'
where sto.student_no = st.student_no 
and st.name = '阿杜';

通过join连接:

update student_info sto inner join student st
on  sto.student_no = st.student_no 
and st.name = '阿杜'
set sto.hobbies = '跳舞';

3:如果表数据量比较大,可以查询需要关联的字段,这样可以提高效率,如:


update student_info sto inner join 
(select student_no,name from student ss) st
on  sto.student_no = st.student_no 
and st.name = '阿杜'
set sto.hobbies = '跳舞';

4:单表进行更新数据:


update student
set address = '陕西宝鸡'
where name = '阿杜';

温故而知新。加油,美好的风景一直在路上!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值