日期:2014-05-18  浏览次数:20580 次

sql 如何实现这种自动编号
类似于给一个班级的学生自动编学号

比如原表
name     id
aa
bb
cc

求update语句   可以达到自动编号的目的
name   id
aa       id001
bb       id002
cc       id003

------解决方案--------------------
Create Table TEST
(name Varchar(10),
id Char(5))
Insert TEST Select 'aa ', Null
Union All Select 'bb ', Null
Union All Select 'cc ', Null
GO
Update
A
Set
id = 'id ' + Right(1000 + (Select Count(*) From TEST Where name <= A.name), 3)
From
TEST A

Select * From TEST
GO
Drop Table TEST
--Result
/*
name id
aa id001
bb id002
cc id003
*/
------解决方案--------------------
paoluo(一天到晚游泳的鱼) ( )

哥们,如果插入三条,然后将第二条删除。你这的代码会出现问题吧。
用MAX会好点吧。
id = 'id ' + Right(1000 + (Select Max(*) From TEST Where name <= A.name), 3)

------解决方案--------------------
这么写不知道是不是LZ想要的
如下:
(id 如果为varchar形)
---声明变量varchar@i,出始值为0---
declare @i varchar Set @i = '0 '
---update表让字段id=@i=@i+1----
Update [表] Set @i = @i + 1,id = 'id00 '+ @i