gpt4 book ai didi

sql - 替换 SQL 中的值 (Microsoft Access)

转载 作者:行者123 更新时间:2023-12-02 03:55:12 25 4
gpt4 key购买 nike

所以:我有一张看起来像这样的小 table :

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

如您所见,第 2 行的值被替换(a 被 b 替换,在本例中 408077-0102 被替换为 408077-5102 ), 然后 b 替换为 c (408077-5102 替换为 408077-5102S 第 1 行)。

这意味着 a = c。我想避免重复替换值。我希望现在更清楚了。

谢谢

最佳答案

如果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])

关于sql - 替换 SQL 中的值 (Microsoft Access),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com