sql - 在 SQL Server 中连接两个表后设置列值
问题描述
表 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
两个表的列,其中 ID oftb1
将更新为表的UpdatedID
列tb1
。
应用连接列后,记录会增加,因为在tb1
表中相同Reference
具有不同的 ID,需要在tb2
表中更新相同的 ID。
我应该如何进行。
使用的 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 |
解决方案
你可以这样做:
UPDATE b SET b.UpdatedID = a.ID
FROM
tb1 A
LEFT JOIN tb2 B
ON A.Reference = B.Reference
它基本上是加入表格和更新。我通常(像你一样)从一个SELECT
声明开始,然后将其更改为UPDATE
. 然后,您通过别名指定要更新的表,最后指定要设置为相等的列(或列)。
推荐阅读
- linux - 设备树覆盖范围属性中的 #address-cells 和 #size-cells 字段
- firebase - 溪流
> 而不是流 - c# - 在 C# 结构中编组一个浮点矩阵数组
- office-addins - msal-browser 2.0,PC平台和登录/令牌获取
- csv - 将具有尾随空格符号的 csv 文件导入 KDB 表
- image - 将幻灯片的图像转换为本机 PowerPoint 幻灯片
- html - 没有 jQuery:div onclick 切换 div 功能
- javascript - 从具有另一个对象数组的给定对象数组中设置索引
- ajax - 在客户端存储 API 令牌的最佳方式是什么?
- python - Flask、gunicorn、psycopg2 - OperationalError SSL 错误:解密失败或坏记录 mac