如何更新每个记录而不在SQL Server中循环

时间:2012-04-20 01:27:39

标签: sql-server

我有一张表并包含下面显示的数据,它叫做TABLE_A

+++++++++++++++++++++++++++++++++++++++++++++
PrimaryID | Col2           | SecondaryID
+++++++++++++++++++++++++++++++++++++++++++++
1         | Description 1  | 0
2         | Description 2  | 0
3         | Description 3  | 0
4         | Description 4  | 0
.         | ...            | .
.         |
.

请参阅上面的 SecondaryID 。它的零值为初始值

我有另一张桌子,它名为TABLE_B,位于

之下
+++++++++++++++++++++++++++++++++++++++++++++
PrimaryID | Col2           | ForeignKeyID
+++++++++++++++++++++++++++++++++++++++++++++
1         | Description 1  | 123
2         | Description 2  | 320
3         | Description 3  | 111
4         | Description 4  | 999
.         | ...            | .
.         |
.

我在SQL Server中遇到麻烦, 如何使用TABLE_B上的 ForeignKeyID 值更新TABLE_A上的 SecondaryID 列,以便TABLE_A的PrimaryID中的每一行等于TABLES_B的PrimaryID。 但是,我不想使用LOOPING CURSORS或其他来解决这个问题。

有简单的方法吗?

我急需,谢谢你。

1 个答案:

答案 0 :(得分:9)

是的,您可以在UPDATE操作中进行连接。如下:

UPDATE table_a SET SecondaryID = b.ForeignKeyID
FROM table_a a
    JOIN table_b b
    on a.PrimaryID = b.PrimaryID

http://sqlfiddle.com/#!3/fdcdb/6