Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据Id匹配(SQL)将表2中的列添加到表1中的列_Sql_Sql Server_Stored Procedures - Fatal编程技术网

根据Id匹配(SQL)将表2中的列添加到表1中的列

根据Id匹配(SQL)将表2中的列添加到表1中的列,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个存储过程,在执行某些计算之后,我选择要在UI上显示的临时表的列 下面是该存储过程的结尾部分 SELECT Id, Data, Value from #preopt 运行此select语句时返回的数据如下所示 Id | Data | Value 1 | xyz | 232 2 | abc | 222 3 | 3232 | www 现在我还有一张桌子。这不是一张临时桌子。它包含以下数据 从dbo.IdLists中选择Id、L

我有一个存储过程,在执行某些计算之后,我选择要在UI上显示的临时表的列

下面是该存储过程的结尾部分

SELECT Id, Data, Value from #preopt
运行此select语句时返回的数据如下所示

 Id   |  Data  |  Value
 1    |  xyz   |   232
 2    |  abc   |   222
 3    |  3232  |   www
现在我还有一张桌子。这不是一张临时桌子。它包含以下数据

从dbo.IdLists中选择Id、List1、List2

Id    |  List1   |  List2 
1     |   g23    |   h323
45    |   g21    |   h44
2     |   g455   |   g45
3     |   g32    |   h48
我希望存储过程中的最后一个表如下所示。在临时表#preopt中。基本上,它检查#preopt中的Id列,并与dbo.IDlists中的Id列进行比较。比较之后,它会选择List1和List2列,并将该id的相关值添加到temp表#preopt中


有人能告诉我这是否可行吗

这个查询应该可以做到这一点。使用IDLIST上联接的值更新临时表中的List1和List2

UPDATE p
SET p.List1 = l.List1, p.List2 = l.List2
FROM #preopt p 
INNER JOIN dbo.IdLists l
ON p.Id = l.Id

看起来你想加入

SELECT po.Id, po.Data, po.Value, il. from #preopt po
INNER JOIN dbo.IdLists il on po.Id = il.Id

Sql Server还是MySql?所有Sql我猜,可能是Sql Server它看起来像你想要一个
JOIN
它是一个会话表(preopt)?Op想要结果中有4列。为什么你需要更新表中选择的2个值?让我用另一种方式来表达。临时表有5列,一列是ID,两列是data,两列是NULL。您需要更新2个空值,而不是4个值,因为2已经有数据。您不需要
update
period。只需一个
选择JOIN
就可以做任何你想做的事情,但是op中的问题是:
在比较之后,它会选择List1和List2列,并将tat id的相关值添加到temp表中#preopt
非常接近,但是你需要修复idlist中的字段名
SELECT po.Id, po.Data, po.Value, il. from #preopt po
INNER JOIN dbo.IdLists il on po.Id = il.Id