Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.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
Sql 如何通过连接另一个只更新某些行的表来更新表中的列_Sql_Sql Server_Join_Sql Server 2014 - Fatal编程技术网

Sql 如何通过连接另一个只更新某些行的表来更新表中的列

Sql 如何通过连接另一个只更新某些行的表来更新表中的列,sql,sql-server,join,sql-server-2014,Sql,Sql Server,Join,Sql Server 2014,我有两张桌子,A和B Table A ID | value ------ | ------ 1 | 20 2 | 21 3 | 25 Table B ID | value ------ | ------ 1 | 15 2 | 10 我需要用表B的相

我有两张桌子,A和B

 Table A

ID     | value                          
------ | ------                
1      |  20                 
2      |  21               
3      |  25

Table B

ID     | value         
------ | ------
1      |  15
2      |  10
我需要用表B的相应值更新表A的值列。问题是表A每天都会更新,每次更新时,它都会用相同的旧值更新,所以我需要创建一个查询,以便它可以用作一个包,用于安排它每天以正确的值运行。 此外,表B中不存在的一些ID及其相应值不应更改。有人能帮我吗。 我正在使用sql server 2014

这就是我正在使用的查询

选择一个[SUBSTAT\u NAME]
,A.[FDR_NUM]
,A.[XFMR_ID]
,A.[XFMR\u尺寸]
,B.图纸尺寸
,A.[PAD_R]
,A.[行为标识]
,A.[阶段]
,A.[SRV_LOC_NUM]
,一辆[公共汽车]
,A.日期和时间
从[SERV_LOC_XFMR_GIS_PROD]左连接
[XFMR_小于_10]B
在A.XFMR\u ID=B.XFMR\u ID上


因此,当XFMR_ID匹配时,我需要将DRG_大小值替换为XFMR_大小。但表A中的其余ID不应更改,应显示在结果中

尝试此操作,但确保先保存备份:

UPDATE A
SET A.value = B.value
FROM A, B
WHERE A.id = B.id

尝试此操作,但请确保先保存备份:

UPDATE A
SET A.value = B.value
FROM A, B
WHERE A.id = B.id

您需要使用以下通用语法:

update a
set a.c1 = b.c1
from tableA as a
inner join tableB as b on b.c2 = a.c2
首先测试一下

select a.c1, a.c2, b.c1, b.c2
from tableA as a
inner join tableB as b on b.c2 = a.c2

并查看您的联接是否产生正确的结果。然后写一个
update
语句。

您需要使用以下通用语法:

update a
set a.c1 = b.c1
from tableA as a
inner join tableB as b on b.c2 = a.c2
首先测试一下

select a.c1, a.c2, b.c1, b.c2
from tableA as a
inner join tableB as b on b.c2 = a.c2

并查看您的联接是否产生正确的结果。然后写一个
update
语句。

当然我们可以帮忙。对此的查询应该非常简单。但是你还没有向我们提供任何真实的细节。如果您可以发布一些ddl和示例数据,我们可以很容易地提供帮助。这是一个很好的起点。没有这些细节,我们只是猜测你想要什么。听起来是了解合并为什么更新的绝佳机会?为什么不创建一个将表连接在一起的视图,以便始终获得最新的值?@GordonLinoff也许表b每天都会被擦除?好问题朋友们好,我的问题是,我的表A有500个ID和它们相应的值,我的表B有100个ID和它们相应的值。表B的这100个ID也存在于表A中,但具有不同的值。因此,我需要更新表A,但只使用表B中存在的ID。其他400个ID的值不应更改。我不想使用update语句,我需要一个select查询哪个cam更新表a。我想在一个我们可以帮助的包中运行它。对此的查询应该非常简单。但是你还没有向我们提供任何真实的细节。如果您可以发布一些ddl和示例数据,我们可以很容易地提供帮助。这是一个很好的起点。没有这些细节,我们只是猜测你想要什么。听起来是了解合并为什么更新的绝佳机会?为什么不创建一个将表连接在一起的视图,以便始终获得最新的值?@GordonLinoff也许表b每天都会被擦除?好问题朋友们好,我的问题是,我的表A有500个ID和它们相应的值,我的表B有100个ID和它们相应的值。表B的这100个ID也存在于表A中,但具有不同的值。因此,我需要更新表A,但只使用表B中存在的ID。其他400个ID的值不应更改。我不想使用update语句,我需要一个select查询来更新cam表a。我想在一个包中运行它