You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server批量更新多行:如何编写关联表的正确UPDATE语句?

正确的SQL更新语句方案

没问题,我来帮你搞定这个更新需求~你之前写的语句问题在于没有明确告诉数据库怎么关联TableA和TableB,所以执行会报错。下面给你几种通用且正确的等价写法,适配不同数据库场景:

方法1:子查询方式(通用所有主流数据库)

这种写法逻辑直观,先获取TableA里的所有ID,再更新TableB中ID匹配的行:

UPDATE TableB
SET STATUS = 7
WHERE ID IN (SELECT ID FROM TableA);

方法2:JOIN关联方式(适合MySQL)

如果你的数据库是MySQL,用JOIN的方式效率更高,尤其是数据量较大时:

UPDATE TableB
JOIN TableA ON TableB.ID = TableA.ID
SET TableB.STATUS = 7;

方法3:FROM关联/EXISTS方式(适合SQL Server、PostgreSQL)

对于SQL Server或者PostgreSQL,可以用FROM子句做关联:

UPDATE TableB
SET STATUS = 7
FROM TableB
INNER JOIN TableA ON TableB.ID = TableA.ID;

或者用EXISTS子句,在TableA有重复ID的场景下性能更优:

UPDATE TableB
SET STATUS = 7
WHERE EXISTS (SELECT 1 FROM TableA WHERE TableA.ID = TableB.ID);

以上几种写法都能实现你的需求:将TableB中与TableA ID匹配的行的STATUS字段更新为7。

内容的提问来源于stack exchange,提问作者Paras

火山引擎 最新活动