gpt4 book ai didi

sql - 更新表并返回旧值和新值

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

我正在编写一个 VB 应用程序,它正在清理 DB2 数据库中的一些数据。在一些表中,我想更新整个列。例如帐号列。我正在将所有帐号更改为从 1 开始,并随着我在列表中向下移动而递增。我希望能够同时返回旧帐号和新帐号,这样我就可以生成某种可以引用的报告,这样我就不会丢失原始值。我这样更新列:

DECLARE @accntnum INT 
SET @accntnum = 0
UPDATE accounts
SET @accntnum = accntnum = @accntnum + 1
GO

有没有办法让我在一个表中同时返回原始 accntnum 和新 accntnum?

最佳答案

DB2 有一个真正的 nifty feature您可以从“数据更改声明”中选择数据。这已经在 DB2 for Linux/Unix/Windows 上进行了测试,但我认为它至少也应该适用于 DB2 for z/OS。 .

对于您的编号,您可能会考虑创建一个 sequence ,还有。那么您的更新将类似于:

 CREATE SEQUENCE acct_seq
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO CYCLE
CACHE 24
;

SELECT accntnum AS new_acct, old_acct
FROM FINAL TABLE (
UPDATE accounts INCLUDE(old_acct INT)
SET accntnum = NEXT VALUE FOR acct_seq, old_acct = accntnum
)
ORDER BY old_acct;

INCLUDE 部分使用指定的名称和数据类型在结果表中创建一个新列,然后您可以像设置任何其他字段一样在更新语句中设置值。

关于sql - 更新表并返回旧值和新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18259024/

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