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


91

我的问题是

如何将列的值增加1。

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

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

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


您想要的任何样品吗?将1列的列值增加1?所有行?您的表格(DDL)在哪?数据样本(DML)?
Kiquenet '16

Answers:


154

要向表中的每个值添加一个...

UPDATE myTable
SET ID = ID + 1

要创建一个新值(通常比前一个值大),请使用IDENTITY列


39
请注意,这并不能当列是NULL工作。NULL列即使增加后仍保持NULL。为了解决这个问题,请使用以下ISNULL语句:(UPDATE myTable SET ID = ISNULL(ID, 0) + 1取自该SO回答
Uwe Keim 2014年

SET [Lic] = [Lic] + @dif。注意@dif变量可以为正,0或负
Kiquenet '16

42

如果要为每行自动生成一个唯一的编号,那么根据尼尔的答案,这就是IDENTITY。

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

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


1

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

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

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


1

在Oracle中,代码有些棘手。

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

使用以下CREATE SEQUENCE语法:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

上面的代码创建了一个名为seq_person的序列对象,该对象从1开始并以1递增。它还将最多缓存10个值以提高性能。高速缓存选项指定将在内存中存储多少序列值以加快访问速度。

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

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

上面的SQL语句会将新记录插入“人员”表中。将为seq_person序列中的下一个数字分配“ ID”列。“名字”列将设置为“ Lars”,“姓氏”列将设置为“ Monsen”。


1

您可以尝试以下方法:

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

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.