我认为这应该很简单,但我是一个SQL新手.
我有两张桌子.一个是项目ID和描述的列表,另一个是相应的旧ID和新ID的映射.像这样:
ID_MAP
OLD_ID NEW_ID
---------------
1 101
2 102
ITEMS
ID DESCRIPTION
--------------------
1 "ItemA"
2 "ItemB"
...
101 <null>
102 <null>
Run Code Online (Sandbox Code Playgroud)
我需要根据地图将旧项目描述复制到新项目.我想我需要使用一个inner join内部update,但它不起作用,我甚至不确定这是正确的方法.
我正在尝试这样的陈述
update ITEMS
set (select ITEMS.DESCRIPTION
from ITEMS
join ID_MAP
on ITEMS.ID = ID_MAP.NEW_ID) =
(select ITEMS.DESCRIPTION
from ITEMS
join ID_MAP
on ITEMS.ID = ID_MAP.OLD_ID)
Run Code Online (Sandbox Code Playgroud)
但当然它不起作用.我该怎么办?
update new_item
set description = old_item.description
from items old_item
inner join id_map im
on old_item.id = im.old_id
inner join items new_item
on im.new_id = new_item.id
Run Code Online (Sandbox Code Playgroud)