update多表联合更新

本文详细介绍了在Mysql、Postgresql和Oracle三种数据库中如何进行多表更新操作,包括使用JOIN和FROM子句的不同方法,以及如何正确设置更新字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

t_student表和t_class表
在这里插入图片描述 在这里插入图片描述

Mysql

UPDATE db_shop.t_student s,db_shop.t_class c 
SET s.class_name=c.name,c.stu_name=s.name 
WHERE s.class_id=c.id
--等效于
UPDATE db_shop.t_student s JOIN db_shop.t_class c 
SET s.class_name=c.name,c.stu_name=s.name 
WHERE s.class_id=c.id

在这里插入图片描述在这里插入图片描述

UPDATE db_shop.t_student s JOIN db_shop.t_class c ON s.class_id=c.id 
SET s.class_name='test11',c.stu_name='test11'

在这里插入图片描述在这里插入图片描述

UPDATE db_shop.t_student s LEFT JOIN db_shop.t_class c ON s.class_id=c.id 
SET s.class_name='test22',c.stu_name='test22'

在这里插入图片描述
在这里插入图片描述

UPDATE db_shop.t_student s RIGHT  JOIN db_shop.t_class c ON s.class_id=c.id 
SET s.class_name='test33',c.stu_name='test33'

在这里插入图片描述在这里插入图片描述

Postgresql

在update语句中不应该通过join来进行多表关联,而是要通过from来多表关联
对于set xxx = 'xxx'这个update的部分,是不可以在column字段前加上表前缀的
2表

update db_shop.t_student 
set class_name =c.name
from db_shop.t_class c
where class_id=c.id

3表或更多表

UPDATE table1 SET mzdm=t.code_id FROM(
SELECT card_id,code_id 
FROM table2 t2 INNER JOIN table3 t3 on t2.nation=t3.nation 
) t WHERE t.id=table1.id

Oracle

Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2…])= (SELECT
col_name1,[,col_name2…] FROM srctable [WHERE where_definition])

Oracel 示例: update db_shop.t_student s set (s.class_name)= (select c.name from db_shop.t_class c where s.class_id=c.id)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值