Sql 使用从特定数字开始的新数字字符串更新数字列
所以,我有一个表项目。 它有列名称、日期和编号。 当前,数字列的外观如下所示:Sql 使用从特定数字开始的新数字字符串更新数字列,sql,oracle,Sql,Oracle,所以,我有一个表项目。 它有列名称、日期和编号。 当前,数字列的外观如下所示: NUMBER 300000 300001 300002 它有大约750个条目。我想用序列号更新数字列,从400045开始,增加1 此外,那里已经有一些项目的编号为400000(即介于400000和400045之间),因此我不想更新这些项目 我试过一些东西,比如: DECLARE @id INT SET @id = 400000 UPDATE **ITEMS** SET @id = **N
NUMBER
300000
300001
300002
它有大约750个条目。我想用序列号更新数字列,从400045开始,增加1
此外,那里已经有一些项目的编号为400000(即介于400000和400045之间),因此我不想更新这些项目
我试过一些东西,比如:
DECLARE @id INT
SET @id = 400000
UPDATE **ITEMS**
SET @id = **NUMBER** = @id + 1
我猜下面的查询足够通用,可以为您工作-
UPDATE ITEMS
SET NUMBER = (SELECT rn
FROM (SELECT NUMBER,
ROW_NUMBER() OVER (ORDER BY NUMBER) + 400045 rn
FROM ITEMS
WHERE NUMBER NOT BETWEEN 400000 AND 400045) X
WHERE X.NUMBER = ITEMS.NUMBER)
尽管您不应该将列名保留为数字,因为这可能会让您感到困惑。您真正使用的是哪个数据库?你发布的代码不是Oracle。你考虑过PL/SQL
FOR
循环吗?谢谢你的帮助。我得到以下错误:SQL错误:ORA-30483:此处不允许使用窗口函数。请指定您的DB产品。您已经标记了Oracle,但代码似乎是SQL SERVER的。Ankit,我很抱歉,您完全正确,它是SQL。我真的很抱歉,这不是我的专长。我感谢你的帮助@MilosBogetic,请同时标记您的版本。这对解决问题有很大帮助。正确标记。谢谢