我的问题是
如何将列的值递增1。
例如,假设列ID
的值为1,2,3,4,..
现在,当我更新此表时,ID
列应该增加1,
现在ID
将变为2,3,4,5,..
答案 0 :(得分:117)
答案 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>