MSSQL 数据库问题 ,从一个表取数更新另外一个表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MSSQL 数据库问题 ,从一个表取数更新另外一个表相关的知识,希望对你有一定的参考价值。

表一(采购订单): 日期,供应商,物品,数量,单价(现在为空),总价(现在为空)表二(价格表):供应商,物品,单价,单价生效日期,单价是失效日期。现在想从价格表,取数到订单表,满足日期范围内的取到订单表,并计算总价符合条件的多个区间的,取最新的单价如图所示:
发错图了已第二个图为准

--要求两个表字段名都相同--根据表1字段,拼一个update的sql语句,然后执行Declare @SQL Varchar(1000)='Update 表1 Set 'Select @SQL=@SQL+'表1.'+name+'=表2.'+name+',' from sys.columns where object_id=object_id('表1')and name<>'id'Set @SQL=STUFF(@SQL,LEN(@SQL),1,'')+' Where 表1.ID=表2.ID'Exec(@SQL) --先删除表1 id在表2的这些数据,然后在插入表2的数据Begin Tran Delete From 表1 From 表1 A Inner Join 表2 on 表1.id=表2.id Insert Into 表1 Select * From 表2 Commit --目前mssql没发现这样的sqlUpdate 表1 Set 表1.*=(Select * from 表2 where id=表1.id) --Oracle有这样的写法Update 表1Set (表1.a1,表1.a2,表1.a3)=(Select b1,b2,b3 from 表2 where id=表1.id) Update 表1Set (表1.*)=(Select * from 表2 where id=表1.id) 参考技术A update a set a.字段1=b.字段1 ,a.字段2=b.字段2 from a,b where a.id=b.id

以上是关于MSSQL 数据库问题 ,从一个表取数更新另外一个表的主要内容,如果未能解决你的问题,请参考以下文章

ABAP从较大内表取部分数据到较小内表中 怎么取 可以按字段直接取数吗?

从 Linux 查询另外一个现有的 MSSQL DB

如何在链接服务器上将数据从 mssql 更新到 mysql

DBA 日常——MSSQL 跨实例迁移数据库

高性能队列设计

取数游戏