如何在SQL中将整数列值增加1

时间:2012-02-15 12:59:58

标签: sql-server-2005

我的问题是

  

如何将列的值递增1。

例如,假设列ID的值为1,2,3,4,..

现在,当我更新此表时,ID列应该增加1,

现在ID将变为2,3,4,5,..

8 个答案:

答案 0 :(得分:117)

为表中的每个值添加一个...

UPDATE myTable
SET ID = ID + 1

要创建一个新值,比前一个最高值(通常)更高,请使用column with IDENTITY

答案 1 :(得分:36)

如果你想为自动生成的每一行都有一个唯一的编号,根据Neil的回答,这是IDENTITY。

如果每次更新表格时想要增加值(即它们不是键):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>

答案 2 :(得分:4)

试试这个:

Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1

答案 3 :(得分:1)

在Oracle中,代码有点棘手。

您必须使用序列对象创建一个自动增量字段(此对象生成一个数字序列)。

使用以下CREATE SEQUENCE语法:

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

上面的代码创建了一个名为seq_person的序列对象,它以1开头并将递增1.它还将缓存最多10个性能值。 cache选项指定将在内存中存储多少个序列值以便更快地访问。

要在“人员”表中插入新记录,我们必须使用nextval函数(此函数从seq_person序列中检索下一个值):

from pyspark import SparkContext, SparkConf
sc = SparkContext("local", "Simple App")        
x = np.matrix(np.random.normal(mu, sigma, 10000), dtype=np.float)
x.shape=(100,100)
rdd = sc.parallelize(x, 10)

上面的SQL语句会在“Persons”表中插入一条新记录。 “ID”列将被分配seq_person序列中的下一个数字。 “FirstName”列将设置为“Lars”,“LastName”列将设置为“Monsen”。

答案 4 :(得分:1)

对于 postgresSQL

UPDATE myTable SET ID = COALESCE(id, 0) + 1;

答案 5 :(得分:0)

您可以使用IDENTITY来为您执行此操作。

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

当您插入第一条记录时,您将获得Id 1。

答案 6 :(得分:0)

您可以尝试以下方法:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)

答案 7 :(得分:0)

更新已接受的答案

像这样可能会更短。

UPDATE myTable
SET ID += 1
WHERE <Condition>