我们有一个旧的零件编号系统,导致许多重复记录。我们已经创建了一个新的系统来防止这种情况,我现在正在尝试将旧的零件号与当前的等价物联系起来。我们用于此功能的程序最初只允许手动将一个旧零件编号链接到新零件编号;如果有5个重复的零件编号,则每个都需要手动链接。我正在尝试编写一个更新查询,将所有这些重复的旧部件链接到替换它的单个新部件。
以下是数据的外观,例如,一个旧的部分链接到新的部分:
Old Part New Part
123 XYZ
123
123
123
123我需要做的是更新第2-5行,以便它们在新的part字段中都显示为XYZ。
对如何做到这一点有什么建议吗?下面是我尝试过的几个查询:
1
update invmas dt1, invmas dt2
set dt1.inv_new_code = dt2.inv_new_code
where dt1.inv_stock_code = dt1.inv_stock_code and dt2.inv_new_code is not null2
update invmas as t1
inner join invmas as t2 on
t1.inv_stock_code = t2.inv_stock_code and t2.inv_new_code is not null
set t1.inv_new_code = t2.inv_new_code不幸的是,它们都产生了语法错误,而我没有太多的运气来找出一个可行的替代方案。
发布于 2015-01-27 08:10:37
可能不允许涉及自联接的UPDATE。试着把作业分成两步(如未经测试)
SELECT DISTINCT inv_stock_code, inv_new_code
FROM invmas
WHERE inv_new_code IS NOT NULL
INTO TEMP mlist1 WITH NO LOG;
UPDATE invmas AS i
SET inv_new_code = (SELECT m.inv_new_code
FROM mlist1 AS m
WHERE i.inv_stock_code = m.inv_stock_code)
WHERE inv_new_code IS NULL;注意:如果一个旧代码有多个新代码,这仍然会爆炸,但从您对问题的描述来看,无论如何都需要进行更正。
发布于 2015-01-24 01:40:32
以下方法似乎不起作用,但我将这个答案留给其他人来帮助他们:
update t1
set t1.inv_new_code = t2.inv_new_code
from invmas t1 inner join
invmas t2
on t1.inv_stock_code = t2.inv_stock_code and t2.inv_new_code is not nullhttps://stackoverflow.com/questions/28115442
复制相似问题