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

我的问题是

如何将列的值增加1。

例如,假设一个列 ID的值为1、2、3、4..。

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

现在 ID会变成2,3,4,5..。

333690 次浏览

你可以使用 IDENTITY为你做这些。

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

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

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

UPDATE myTable
SET ID = ID + 1

要创建一个新值,比前一个最高值(通常)多一个,请使用 具有 IDENTITY 的列

如果你想有一个唯一的数字为每一行自动生成,这是身份作为每尼尔的答案。

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

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

你可以试试以下方法:

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


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

在 Oracle 中,代码要稍微复杂一些。

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

使用以下 CREATE SEQUENT 语法:

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

上面的代码创建了一个名为 seq _ person 的序列对象,该序列对象从1开始,递增1。它还将为性能缓存多达10个值。Cache 选项指定有多少序列值将存储在内存中以便更快地访问。

要在“ Person”表中插入新记录,我们必须使用 nextval 函数(该函数从 seq _ person 序列中检索下一个值) :

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

上面的 SQL 语句将向“ Person”表中插入一条新记录。“ ID”列将被分配到 seq _ person 序列中的下一个数字。“ FirstName”列将设置为“ Lars”,“ LastName”列将设置为“ Monsen”。

试试这个:

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

用于后期 SQL

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

已接受答案的最新情况

这样可能会短一点。

UPDATE myTable
SET ID += 1
WHERE <Condition>