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
我正在尝试更新数据库中的一行。我正在通过我的程序将数据上传到临时 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