Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用从特定数字开始的新数字字符串更新数字列_Sql_Oracle - Fatal编程技术网

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/SQLFOR循环吗?谢谢你的帮助。我得到以下错误:SQL错误:ORA-30483:此处不允许使用窗口函数。请指定您的DB产品。您已经标记了Oracle,但代码似乎是SQL SERVER的。Ankit,我很抱歉,您完全正确,它是SQL。我真的很抱歉,这不是我的专长。我感谢你的帮助@MilosBogetic,请同时标记您的版本。这对解决问题有很大帮助。正确标记。谢谢