所以:我有一张小桌子,看起来像是:
PartNumber ReplacedNumber
408077-5102 408077-5102S
408077-0102 408077-5102
正如你在这里看到的,我想用一个被替换的数字替换零件号,问题是如果a被替换为b,而b被c替换,那么它暗示a被替换为c。
任何人都知道如何做到这一点?
感谢您的帮助
更新
好的,这是样本数据:
id PartNumber ReplacedNumber
1 408077-5102 408077-5102S
2 408077-0102 408077-5102
如您所见,第二行中的值被替换(a被替换为b,在这种情况下408077-0102
被408077-5102
替换),然后b被替换为c( 408077-5102
在第1行中被408077-5102S
替换。
这意味着a = c。我想避免在重复中替换值。我希望现在更清楚了。
由于
答案 0 :(得分:1)
如果a被替换为b,并且b被c替换,那么它意味着a被替换为c可以写成:
SELECT
Replace.ID,
Replace.PartNumber,
IIF(Not IsNull([Replace_1].[ReplacedNumber]),
[Replace_1].[ReplacedNumber],
[Replace].[ReplacedNumber])
FROM
Replace LEFT JOIN Replace AS Replace_1
ON Replace.ReplacedNumber = Replace_1.PartNumber
(它是一个SELECT查询,但可以在UPDATE查询中轻松转换)但这并不能解决c替换为d的情况,(我想)也意味着a被d替换。
我认为这里唯一的解决方案是使用递归函数:
Function searchReplaced(ReplacedNumber) as Variant
Dim Look As Variant
Look = DLookup("ReplacedNumber",
"Replace",
"PartNumber=""" & ReplacedNumber & """")
If IsNull(Look) Then
searchReplaced = ReplacedNumber
Else
searchReplaced = searchReplaced(Look)
End If
End Function
然后你只需启动此UPDATE查询:
UPDATE Replace
SET Replace.ReplacedNumber = searchReplace([Replace].[ReplacedNumber])
答案 1 :(得分:0)
如果该表具有主要ID,您只需更新表
即可update table set partnumber=replacednumber where id=id of the column you want to replace
id指的是主键