SQL Server 2000如何生成序列?

whatwherewhyhow 2009-06-07 01:37:14
不修改表、不使用临时表、环境SQL Server 2000的情况下
实现的功能如下:
SELECT .......

结果:
1
2
3
4
5

1,2,3,4,5为SELECT自动生成的序列号.

CREATE TABLE #T(I INT)
INSERT INTO #T
SELECT 1
UNION
SELECT 2
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
whatwherewhyhow 2009-06-07
  • 打赏
  • 举报
回复
呵呵,好吧,其实提问之前我已经在Google上搜过了

我觉得
select count(*) from tb
这里进行了全表扫描,有点浪费

既然最后这个备用办法也被你知道了,就这样先结贴吧。 还是很期待有更好的办法。
ks_reny 2009-06-07
  • 打赏
  • 举报
回复

select a.*,num=(select count(*) from tb b where b.id<a.id) from tb a
whatwherewhyhow 2009-06-07
  • 打赏
  • 举报
回复
其实查的表是一个已有的结果集,使用上述类似这样的SQL,按您的意思,给这个结果集加个序列的字段

但是不是很喜欢使用临时表插入数据再生成identity ID这种做法
ks_reny 2009-06-07
  • 打赏
  • 举报
回复
你的意思是不是给表增加一个序列的字段?
whatwherewhyhow 2009-06-07
  • 打赏
  • 举报
回复
是要生成哦,例如通过function(没写出来- -),不依赖其它表,谢谢你。

SQL Server 2005中是这么用的,但是现在要用2000的版本
SELECT ROW_NUMBER() OVER(ORDER BY [ID] DESC) AS ....
ks_reny 2009-06-07
  • 打赏
  • 举报
回复
select number  
from master..spt_values
where type='p'
不过这个只能是0-255.
whatwherewhyhow 2009-06-07
  • 打赏
  • 举报
回复
在不修改表、不使用临时表、环境SQL Server 2000的情况下
ks_reny 2009-06-07
  • 打赏
  • 举报
回复

select top 100 ID=Identity(int,1,1) into #a from syscolumns a,syscolumns b

select * from #a

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧