更新等于视图行的表行

时间:2017-03-16 10:33:24

标签: sql while-loop sql-update

我的视图包含重复guid的表示

GUID
----
1234
5524
1111

然后我有这样的表:

ID|SomeColumn|GUID
--+----------+----
1 |value1    |1111
2 |value1    |1112
3 |value1    |1113
4 |value1    |5524
5 |value1    |1234

我想创建遍历该表的循环,并更新那些GUID与该视图(表)GUID相等的行。

我把它绑起来了:

UPDATE DT
    SET [GUID] = dbo.CREATE_UNIQUE_GUID(ID)
    FROM [DetailsTable] as DT
    INNER JOIN GUID_Duplicates as GD
        ON DT.GUID=GD.GUID
        WHERE DT.GUID=GD.GUID

并且:在函数中使用副作用运算符'UPDATE'无效。

所以在伪代码中我想:

如果DataTable包含具有相同GUID设置GUID的行到新生成的值,则

复制表中的foreach复制。

注意:我有guid生成工作,所以我不知道如何使用每个视图值浏览DataTable。 此外,DataTable可以有多行,其中GUID等于View中的每个GUID。

1 个答案:

答案 0 :(得分:1)

直接使用SELECT子句用于UPDATE语句:

 UPDATE [DetailsTable] SET [DetailsTable].[GUID] = dbo.CREATE_UNIQUE_GUID(ID)
 FROM [GUID_Duplicates]
 WHERE [DetailsTable].GUID = [GUID_Duplicates].GUID