update语句可以跟from where的

A(id,username),B(userid,name)
如果需要更新A.id为,条件是A那条数据的username等于B.name时的B.userid

update A set A.id=B.userid from A,B where A.username=B.name 

### SQL 中 `UPDATE` 语句的 `WHERE` 子句支持表关联的方法 在 SQL 的 `UPDATE` 语句中,可以通过 `WHERE` 子句实现与其他表的关联操作。这种技术通常被称为 **多表更新** 或者通过子查询来完成复杂的条件匹配。 #### 方法一:使用显式的 JOIN 语法 某些数据库管理系统(DBMS),如 MySQL 和 PostgreSQL 支持直接在 `UPDATE` 语句中使用 `JOIN` 来关联其他表。以下是具体示例: ```sql -- 更新 customers 表中的 contact_name 字段, -- 基于 countries 表中 country='Mexico' 的条件。 UPDATE customers c INNER JOIN countries co ON c.country_id = co.id SET c.contact_name = 'Juan' WHERE co.name = 'Mexico'; ``` 此方法利用了 `INNER JOIN` 将两张表连接起来,并通过 `WHERE` 子句进一步筛选符合条件的数据[^1]。 #### 方法二:使用子查询 另一种常见的方式是在 `WHERE` 子句中嵌套子查询来进行跨表条件判断。这种方法适用于大多数 DBMS。 ```sql -- 同样是基于 countries 表中 country='Mexico' 的条件, -- 对 customers 表执行更新操作。 UPDATE customers SET contact_name = 'Juan' WHERE id IN ( SELECT customer_id FROM countries WHERE name = 'Mexico' ); ``` 上述例子展示了如何借助子查询找到满足特定逻辑关系的目标记录集合[^2]。 #### 注意事项 当涉及到多个表之间的交互时,理解 `ON` 子句与 `WHERE` 子句的区别非常重要。前者定义了两表间的关系模式;后者则负责最终数据集的选择标准[^3]。 另外需要注意的是并非所有的 RDBMS 都完全兼容以上两种形式之一或者两者皆可的情况,请参照所使用的具体产品的文档说明确认其特性支持情况[^4]。 ### 结论 综上所述,在SQL语言里确实存在多种途径允许我们构建带有复杂业务规则约束下的批量修改动作——即所谓的“update join”。无论是采用显示声明型join还是隐含表达式subquery的形式都能够很好地达成这一目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值