SQL Update语句使用Join

时间:2015-02-06 00:41:58

标签: c# sql sql-server tsql left-join

我正在尝试更新数据库中的一行。我通过我的程序将数据上传到临时表,然后在转换后将数据移动到主表。例如,我将一个文件上传到我的临时表中,该表有2行:第一行是个人ID,第二行是鞋子品牌,鞋子品牌是主键。我还有一个鞋品牌表,其中说Nike是第1行,Adidas第2行,Reebok第3行和Shoe_Brand_Name是名称列的名称,而Shoe_Brand_ID是与名称关联的ID。

当我将数据上传到临时表时,它将如下所示:

              TEMP_TBL

Personal ID              Shoe Brand
  123456                    Nike

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

              MAIN_TBL

Personal ID              Shoe_Brand
  123456                      1

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

         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'

此代码运行,但什么也没做.....几乎没有。

有人能给我一些建议吗?

1 个答案:

答案 0 :(得分:1)

我假设您正在使用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