SQL2000存储过程使用游标找最后一条记录的ID麻烦高手!

时间:2021-11-09 05:59:18
现在是这样的。。。以前用户要求的是自动生成一个编号避免重复这个到好说加点算法就生成一个不太可能重复的并且是截取日期身份证然后赋值给变量就行了
可是现在要求实际上很简单所以编号都从00000开始接着第2条记录00001第三条00002就是这样递增 但是要求也是自动生成 所以我现在想的是取最后一次也就是最LAST的那条记录拿他的ID截取整个编号加1然后生成这样就可以实现00001,00002.。。。。
可是存储过程还行 可是游标从来没接触过 但是现在已经开始做了 所以麻烦大家帮帮忙 
我举个例子看看大家能不能帮忙把这个使用游标或者什么的来实现我说的这个给大家一个例子帮忙写写谢谢了
表名 Main
字段 Number
姓名 USERNAME
姓名这里不用写了 主要就是意思是每调用这个存储过程一次就自动生成一个ID 并且这个ID是遵循一个递增的我想应该说的。。比较清楚了吧呵呵 拜托版主 拜托各位了!!!

16 个解决方案

#1


用max\TOP 1+order by ...desc

#2


游標用 
FETCH LAST 

#3


select max(ID)+1 from tb

#4


1.@@IDENTITY
2.MAX

#5


游標方法,取最大+1就行了

select right(isnull(max(ID),0)+100001,5) from 表




declare roy SCROLL cursor  for
select ID from sysobjects
declare @ID int
open roy
fetch last from roy into @ID
print @ID
close roy
deallocate roy

#6


晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量

#7


这个东西可以不用游标,用自带的max函数就可以了,看帮助里max有

#8


其实用identity字段不是很好吗?

#9


把这个编号单独放到一个表中,只保留一条记录,每次加1好了,权当作是个序号发生器了

#10


引用 6 楼 jy02411368 的回复:
晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量


那用不着游标,直接用 颠倒法 取得就可以了
颠倒法:
select top 1 * from 
(select * from tb1 where ... order by 排序字段 ) --按升序排列
order by 排序字段 desc  --这里 desc 降序获取最后一条记录
--如果在子查询里面是 desc 降序的话,后面就用升序 asc

#11


引用 6 楼 jy02411368 的回复:
晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量


或者用聚合函数直接查询出来
select max(id) from tb1 where ...

#12


最好的方法是自动递增
要不然就取最大值
用游标倒是牵强附会

#13


楼主没用过游标可以学着尝试用一下,要不然光别人将是没有概念的

#14


up

#15


其实也是想趁这个机会学学游标。。啊。、。

#16


关注

#1


用max\TOP 1+order by ...desc

#2


游標用 
FETCH LAST 

#3


select max(ID)+1 from tb

#4


1.@@IDENTITY
2.MAX

#5


游標方法,取最大+1就行了

select right(isnull(max(ID),0)+100001,5) from 表




declare roy SCROLL cursor  for
select ID from sysobjects
declare @ID int
open roy
fetch last from roy into @ID
print @ID
close roy
deallocate roy

#6


晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量

#7


这个东西可以不用游标,用自带的max函数就可以了,看帮助里max有

#8


其实用identity字段不是很好吗?

#9


把这个编号单独放到一个表中,只保留一条记录,每次加1好了,权当作是个序号发生器了

#10


引用 6 楼 jy02411368 的回复:
晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量


那用不着游标,直接用 颠倒法 取得就可以了
颠倒法:
select top 1 * from 
(select * from tb1 where ... order by 排序字段 ) --按升序排列
order by 排序字段 desc  --这里 desc 降序获取最后一条记录
--如果在子查询里面是 desc 降序的话,后面就用升序 asc

#11


引用 6 楼 jy02411368 的回复:
晕 看起来还是又点不太理解我以前没有接触过游标。。这个东西。。。我是要找最后一行记录的ID赋值给一个临时变量


或者用聚合函数直接查询出来
select max(id) from tb1 where ...

#12


最好的方法是自动递增
要不然就取最大值
用游标倒是牵强附会

#13


楼主没用过游标可以学着尝试用一下,要不然光别人将是没有概念的

#14


up

#15


其实也是想趁这个机会学学游标。。啊。、。

#16


关注