个人在企业用到的UPDATE语法场景

本文介绍了在企业开发中如何在MySQL中使用多表关联更新数据,包括通过JOIN操作(INNERJOIN和LEFTJOIN)以及利用子查询进行单表更新,详细解释了每种方法的语法和应用场景。

个人在企业用到的UPDATE语法场景

适用场景:
日常的开发中一般都是写的单表update语句,很少写多表关联的update。我们在公司使用数据库时,有时会用到多表关联更新操作
在MySQL中我们有几种方法可以做到多表关联更新:

1. 在两张表之间做关联,可以更新关联的多张表

update  biao1,表2
set1.列名=2.列名  --外键或关联字段
where
更新条件;--例如:表1.列名=表2.列名,或字段aa>1等等

2. 通过 INNER JOIN,可以更新关联的多张表

update1
inner join2   on1.列名=2.列名  --外表链接 ID
set1.列名=值;--更新的内容

3. 通过 LEFT JOIN ,可以更新关联的多张表

update1
left join2  on1.列名=2.列名  --外表链接ID
set1.列名=新值;

4. 通过子查询,只更新一张表

update1
set1.列名=select  字段  from2  where2.列名=1.列名 );
### 语法结构 UPDATE SET 的基本结构为: ```sql UPDATE 表名 SET 字段 = 值 WHERE 过滤条件; ``` 其中,“表名”指定要更新的表,有且仅有1个,必须是真实的表;“字段 = 值”用于更新字段,若更新多个字段,用逗号隔开,值可以是计算表达式;“WHERE 过滤条件”指定更新的行,若省略则更新全量数据,过滤条件可以有0个或者多个[^4]。 ### 使用场景 - **单表数据更新**:当需要修改某个表中的部分或全部数据时,可使用 UPDATE SET。例如,将某个用户的年龄修改为新的值。 - **多表关联更新**:在涉及两个或多个表之间的数据关联时,需要将某个表的字段根据两个表中相关字段更新为另一个表中某个字段的数据,也会用到 UPDATE SET 结合 FROM 子句的方式 [^3]。 ### 示例 #### 单表更新示例 假设有一个名为 `students` 的表,包含 `id`、`name`、`age` 字段,现在要将 `id` 为 1 的学生的年龄更新为 20 岁。 ```sql UPDATE students SET age = 20 WHERE id = 1; ``` #### 多表关联更新示例 假设有两个表 `A` 和 `B`,表结构及部分数据如下: 表 `A`: | ID | A1 | A2 | A3 | |----|----|----|----| | 1 | 10 | 20 | 30 | | 2 | 40 | 50 | 60 | 表 `B`: | ID | B1 | B2 | B3 | |----|----|----|----| | 1 | 100 | 200 | 300 | | 2 | 400 | 500 | 600 | 现在要将表 `A` 中的 `A1`、`A2`、`A3` 字段根据 `ID` 关联更新为表 `B` 中的 `B1`、`B2`、`B3` 字段的值。 在 MS SQL Server 中可以这样写: ```sql UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A, B WHERE A.ID = B.ID; ``` 或者使用 `LEFT JOIN` 的方式: ```sql UPDATE A SET A1 = B1, A2 = B2, A3 = B3 FROM A LEFT JOIN B ON A.ID = B.ID; ``` 在 Oracle 和 DB2 中的写法如下: ```sql UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID) WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值