我有两张桌子,A和B
Table A
ID | value
------ | ------
1 | 20
2 | 21
3 | 25
Table B
ID | value
------ | ------
1 | 15
2 | 10
我需要更新表A的值列,并使用表B的相应值。问题是表A每天都会更新,并且当它更新时 - 它会使用相同的旧值更新,所以我需要创建一个查询,以便它可以用作一个包来安排它每天运行正确的值。 此外,不应更改表B中未提供的某些ID及其对应值。有人可以帮我弄这个吗。 我正在使用sql server 2014
这是我正在使用的查询。
SELECT A.[SUBSTAT_NAME]
,A.[FDR_NUM]
,A.[XFMR_ID]
,A.[XFMR_SIZE]
,B.DRG_size
,A.[PAD_R]
,A.[CONDUCT_ID]
,A.[PHASE]
,A.[SRV_LOC_NUM]
,A.[BUS]
,A.DATE_TIME
FROM [SERV_LOC_XFMR_GIS_PROD] A left join
[XFMR_LESS_THAN_10] B
on A.XFMR_ID = B.XFMR_ID
因此,当XFMR_ID匹配时,我需要用XFMR_SIZE替换DRG_SIZE值。但表A中的其余ID不应更改,应显示在结果
中答案 0 :(得分:2)
您需要使用以下一般语法:
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
语句。
答案 1 :(得分:1)
试试这个,但请务必先保存备份:
UPDATE A
SET A.value = B.value
FROM A, B
WHERE A.id = B.id