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

时间:2017-05-23 18:51:34

标签: 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的SELECT 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的相关值添加到临时表#preopt

 Id   |  Data  |  Value   | List1  | List2
 1    |  xyz   |   232    | g23    |  h323
 2    |  abc   |   222    | g455   |  g45
 3    |  3232  |   www    | g32    |  h48

有人可以告诉我这是否可以实现?

2 个答案:

答案 0 :(得分:0)

此查询应该可以解决问题。使用IDLists上的连接值更新临时表中的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

答案 1 :(得分:0)

看起来你想要加入。

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