在平常的工作中,我们经常会更新表的数据。常见的表关联更新数据例如用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 = '阿杜';

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐