我的问题是
如何将列的值增加1。
例如,假设一个列 ID的值为1、2、3、4..。
ID
现在,当我更新这个表时,ID列应该增加1,
现在 ID会变成2,3,4,5..。
你可以使用 IDENTITY为你做这些。
IDENTITY
CREATE TABLE [dbo].[MyTable]( [MyTableID] [int] IDENTITY(1,1) NOT NULL, -- Other columns )
当您插入第一条记录时,您将获得 Id为1的值。
Id
为表中的每个值添加一个..。
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>