填补自增列问题

发布时间:2024-05-28 08:09 发布:上海旅游网

问题描述:

表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

热点新闻