表1: tb1
|ID|Reference|
|1|ABCD|
|2|EFGH|
|3|IJKL|
|4|MNOP|
|5|MNOP|
表2: tb2
|Reference |UpdatedID |
|ABCD | |
|ABCD | |
|EFGH | |
|EFGH | |
|EFGH | |
|EFGH | |
|IJKL | |
|MNOP | |
|MNOP | |
我需要在tb2
的基础上更新表tb1
的空白列。
要联接的公共列是两个表的Reference
列,其中tb1
的ID将更新为UpdatedID
表的tb1
列。
应用连接列后,记录将增加,如tb1
表中一样,同一Reference
具有不同的ID,需要在tb2
表中进行相同的更新。
我应该如何进行。
使用的JOIN查询:
select
A.csvRefNumber,
A.reference,
B.reference
from
tb1 A
left join
tb2 B on A.Reference = B.Reference
order by
csvRefNumber
必填输出:
|Reference |UpdatedID |
|ABCD |1 |
|ABCD |1 |
|EFGH |2 |
|EFGH |2 |
|EFGH |2 |
|EFGH |2 |
|IJKL |3 |
|MNOP |4 |
|MNOP |5 |
答案 0 :(得分:0)
您可以这样做:
UPDATE b SET b.UpdatedID = a.ID
FROM
tb1 A
LEFT JOIN tb2 B
ON A.Reference = B.Reference
基本上是在联接表并进行更新。我通常像您一样从SELECT
语句开始,然后将其更改为UPDATE
。然后,通过别名来指定要更新的表,最后要设置为相等的列。
答案 1 :(得分:0)
我想这就是你想要的:
update tb2
set updateid = tb1.id
from tb2 join
tb1
on tb2.reference = tb1.reference;