sqlserver 将一个表中的某些字段更新到另一个表中(转载)
来源:https://blog.csdn.net/qq_23888451/article/details/86615555
https://blog.csdn.net/cyxinda/article/details/78254110
(注释:A1、A2、A3,指A表的三个字段)
一、Oralce和DB2都支持的语法:
UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
二、MS SQL Server不支持这样的语法,相对应的写法为:
方式一:
UPDATE A
SET A1 = B1, A2 = A1*B1*100
FROM A LEFT JOIN B ON A.ID = B.ID
此处也可以 right join 、 inner join,A2是个计算值
方式二:
UPDATE A
SET A1 = B1, A2 = B2, A3 = B3
FROM A, B WHERE A.ID = B.ID
三、Oracle和DB2中的写法
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)
注:如果要更新的表A数据量过大,而且仅更新表A的部分数据,那么,需要在前面的语句中加入where筛选要操作的数据。
四、案例:
公司做的业务有个需求是将A表中的某些字段数据,更新到B表中的相应含义的字段中。
假设user、score表的字段如下:
user表
userId username password sex addr phone
1 张珊 123 男 北京市 1562356586
2 李思 456 女 北京市 1562354256
3 王武 789 男 北京市 1562345544
4 王柳 113 男 北京市 1562445778
score表
scoreId userId username score course phone
1 1 80 语文
2 1 85 数学
3 3 52 语文
4 2 67 数学
现在score表中的username和phone字段是空的,需要从user表中,查找出相应的值插入score表中,SQL语句如下:
update score
set score.username=user.username,score.phone=user.phone
from score,user
where score.userId=user.userId
案列二 计算值、inner join on
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB+100
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA );
例如
update dbo.T_AlgaData set Biomass= dbo.T_AlgaData.Density * dbo.T_AlgaCatalog.CellBiomass*(0.000000001)
from T_AlgaData inner join T_AlgaCatalog on (T_AlgaData.CatalogID=T_AlgaCatalog.CatalogID
and T_AlgaCatalog.CatalogLevel=5 and T_AlgaCatalog.CellBiomass is not null )
五、相关扩展
1将一张表中的数据插入到另一张表
https://www.cnblogs.com/hao-1234-1234/p/8484353.html
2跨服务器增删改查
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-06-04 在JS方法中返回多个值的三种方法(转载)
2018-06-04 EF 延时加载与死锁