填补自增列问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 23:44:21
表test1(EmpCname)
张三
李四
王五
表test2(EmpID,EmpCname)
1,田七
......
175,王八
用一条语句让表test1加上EmpID,不可以使用Identity,test1中的empcname不存在于test2中,也别使用Case when empcname='张三' then 176语法

结果
EMPid,EmpCname
176,张三
177,李四
178,王五
不是oracle 是sqlserver2000的

问题补充:

不是oracle 是sqlserver2000的
-----------------------
如果EmpCname没有重复时可用

select
ID=(select count(*) from test1 where EmpCname<=t.EmpCname)--按EmpCname大小生成
,EmpCname
from test1 as T

有重复或不想改变表本身的顺序时,只可用临时表或表变量
如:
declare @T table(ID int identity,EmpCname nvarchar(50))
isnert @T(EmpCname) select EmpCname from test1
select * from @T

select ID=identity(int,1,1),EmpCname into # from test1
select * from #

select row_number() over (order by empcname) +
(select max(empid) from test2) ,
empcname
from test1