如何在SQL中使用返回的数据更新单列?

时间:2018-07-04 21:05:57

标签: sql sql-server sql-server-2016

鉴于下面的SELECT语句的输出,我如何将所有记录的“ CameraLocationID”字段更新为“ LocationID”字段中的值?

当前状态:

ItemID  CameraID    CameraLocationID    LocationID
2       23038       NULL                335
3       23039       NULL                67
4       23040       NULL                34
5       23041       NULL                234

所需的输出:

ItemID  CameraID    CameraLocationID    LocationID
2       23038       335                 335
3       23039       67                  67
4       23040       34                  34
5       23041       234                 234

我尝试过的事情:

  • 选择,然后尝试使用SSMS复制/粘贴单列
  • INSERT INTO(由于我本质上并不是真正的“ INSERTING”,所以知道这几乎是行不通的
  • 将LocationID值复制并粘贴到Excel中,然后尝试使用SSMS将其c / p返回到SQL

是否有SQL方式可以很快地做到这一点?

编辑:对于将来的旅行者,CameraLocationID和LocationID在不同的表中。 SELECT在应用UPDATE之前将它们放到一个输出中。

1 个答案:

答案 0 :(得分:5)

Update myTable set CameraLocationID = LocationID;

是您所需要的。

如果locationID来自另一个表,则需要在其中进行链接的ID字段,我认为源和目标都具有CameraId字段:

Update targetTable
set CameraLocationId = sourceTable.LocationId
from sourceTable 
where targetTable.CameraID = sourceTable.CameraID;

如果不是这种情况,请提供有关表结构和当前数据的完整信息。