我有桌车
Id nvarchar(25) PK
Name nvarchar(max)
还有一些记录。
Id Name
CodeXYZ Namezxc
CodeQAZ Nameasd
CodeEDC Nameqwe
我想将Id列转换为int autoincrement:
Id Name
1 Namezxc
2 Nameasd
3 Nameqwe
但我不知道怎么做:/ 你能帮帮我吗?
答案 0 :(得分:1)
创建一个与第一个表(TBLA)的表结构匹配的新表(TBLB),除了为您的ID列创建第二个带有int标识插入列的表。
然后
插入TBLB (名称) 选择名称来自TBLA
确保映射列,以便您不选择或插入Id列。
然后您可以删除原始表并重命名新表。
这有点痛苦,但应该得到你想要的。您甚至可以向TBLB添加一列以将原始ID保留在新列中。
答案 1 :(得分:1)
在SQL Server Management Studio中,您可以右键单击该表,然后对其进行修改。
进入后,选择要自动增加的列。您应该能够将其更改为INT。
然后查看列属性;其中一个是IDENTITY,这是一个独特的自动递增字段。通过启用该属性并保存更改,您可以获得所需的内容。
如果您在该字段中有重复项,或者无法转换为INT的值,则会失败。您需要在表上运行UPDATE以消除任何问题或首先重复。
修改强>
您发表了评论“所有记录都是字符串”。如果字符串值没有强制转换为INT,那么您无法满足要求。看起来像“AAABC”的字段不能自动递增。
答案 2 :(得分:0)
我不知道是否可以使用SQL Server,但使用MySQL可以使用:
SET @tempVariable := 0;
UPDATE block SET id = (@tempVariable:=@tempVariable+1);
这个想法是启动一个每次使用UPDATE递增的变量。