SQL 使用 Join 更新语句

SQL Update Statement Using Join

我正在尝试更新数据库中的一行。我正在通过我的程序将数据上传到临时 table,然后在转换后将该数据移动到主 table。例如,我将一个文件上传到我的 temp table 中,它有两行:第一行是个人 ID,第二行是鞋子品牌,鞋子品牌是主键。我还有一个鞋品牌 table,其中耐克是第 1 行,阿迪达斯第 2 行,锐步第 3 行,Shoe_Brand_Name 是带有名称的列的名称,Shoe_Brand_ID 是关联的 ID与名字。

当我将数据上传到我的临时文件 table 时,它看起来像这样:

              TEMP_TBL

Personal ID              Shoe Brand
  123456                    Nike

但是当我将它移动到我的主 table 时,我使用的是带有左外连接的插入,并且与上面相同的数据在主 table 中将如下所示:

              MAIN_TBL

Personal ID              Shoe_Brand
  123456                      1

这就是我的问题所在。假设用户上传了另一个具有相同个人 ID 的文件,不同之处在于鞋子品牌从 Nike 变为 Reebok。我需要主 table 更新到这个:

         MAIN_TBL (After Update)

 Personal ID              Shoe_Brand
  123456                      3

这是我正在尝试的代码 运行:

UPDATE [MAIN_TBL]
SET [Shoe_Brand] = b.[Shoe_Brand_ID]

FROM [TEMP_TBL] a
left outer join [MAIN_TBL].tbl_shoebrand b on (a.[Shoe Brand] = b.Shoe_Brand_Name)

WHERE [Personal ID] = '123456'

此代码 运行s,但什么也没做..... 字面上什么也没做。

谁能给我一些建议?

我假设您正在使用 SQL Server?也许这就是您正在寻找的:

update m
set m.shoebrandid = sb.shoebrandid
from main_tbl m
  join temp_tbl t on m.personalid = t.personalid 
  join shoebrand sb on t.shoebrand = sb.shoebrand