我从SQL Server数据库中的表中删除了一些记录(更确切地说是第4行)。现在第一列如下(1,2,3,5)没有第4行:
ID Name
------------
1 Luk
2 Sky
3 Philips
5 Andrey
如何重新创建此表并按适当顺序再次插入所有数据?
像这样:
ID Name
--------
1 Luk
2 Sky
3 Philips
4 Andrey
编辑:
但是如果我有另一个不是键的列(数字),就像这样:
ID Number Name
------------
1 1 Luk
2 2 Sky
3 3 Philips
5 5 Andrey
然后我可以重新创建列号和名称,
ID Number Name
------------
1 1 Luk
2 2 Sky
3 3 Philips
5 4 Andrey 'Can i do this, and if can HOW?
答案 0 :(得分:0)
您可以使用dbcc命令
DBCC CHECKIDENT('tableName', RESEED, 0)
它会将身份重置为0。
注意首先需要截断表格。
答案 1 :(得分:0)
您可以将ID设置为自动递增,默认情况下,AUTO_INCREMENT的起始值为1,每个新记录的值将增加1。
例如,MSSQL使用IDENTITY关键字自动递增,而MySQL使用AUTO_INCREMENT关键字执行自动递增功能。
MSSQL
ID int IDENTITY(1,1) PRIMARY KEY
的MySQL
ID int NOT NULL AUTO_INCREMENT
答案 2 :(得分:0)
我会做一个非常强大的案例,因为它不会存储这个数字,因为它是计算出来的,而你可以创建一个视图:
CREATE VIEW dbo.YourView
AS
SELECT ID,
Number = ROW_NUMBER() OVER(ORDER BY ID),
Name
FROM dbo.YourTable;
GO
这样,删除行后,您的视图就已经同步,无需执行任何更新。
如果您需要存储该值,则几乎相同的查询适用,但只是放在公共表表达式中,然后更新:
WITH CTE AS
( SELECT ID,
Number,
NewNumber = ROW_NUMBER() OVER(ORDER BY ID)
FROM dbo.YourTable
)
UPDATE CTE
SET Number = NewNumber;