如何在取得的查询记录中加上序号列??

时间:2022-11-25 21:36:18
比如我的表users结构如下:
usid  usname ...
001    张三
002  李四
007  王二
。。。。

我显示出下列格式:

 序号 usid  usname
 1 001    张三
 2 002  李四
 3 007  王二 
  。。。。

我只知道选择出数据是用:
select usid,usname  from  users
怎么写可以加上序号列,

不要定义自动排序列,那样的序号不边续

21 个解决方案

#1


Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a

#2


如果可用臨時表:
select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

但很多條件下用臨時表不方便,不用臨時表又得新建一個物理表,幫你頂!

#3


frewin的應該可以,我剛剛才想到了

#4


Select top 100 序号=Identity(int,1,1),usid,usname Into #temptable From users
Select * From #temptable  
Drop Table #temptable

#5


如果数据量大的话,这种方式效率很低:
Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a

#6


? 如何讓效率高

#7


“如果数据量大的话,这种方式效率很低:
Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a”

-------------这个肯定是的~~~
所以我建议有局部临时表

#8


if you want to use by ado,then you can use it follow next
 set rs.cursorlocation=3
 rs.open sql,conn,3,2
 rs.bookmark  // the value of rs.bookmark is 1,2,3,4,...
 

#9


what's mean

#10


如果可用臨時表:
select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#11


to:comszsoft 
your answer is nothing to this question

#12


我觉的````long0104的方法会好点吧
我要提供的也是这个方法

#13


select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#14


你这可以让前台去做啊,不一定要SQL来实现的,而且你又不要用临时表,那只能前台显示了

#15


select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#16


想到一个办法。首先说sorry,早上在繁体的机器上不好打中文。
先分析一下你的问题,
情况1、你要用前台程序来调用sql的话,就可以用rs.bookmark,上面已经说了;
情况2、你是要在数据库中显示像你说得那样的信息的话,就可以考虑把表机构修改一下,在前面加一个自动编号字段,不然搞不清你想干什么?
应该写出你的想法,让大家帮你考虑更好的解决之道

#17


我是想的是在取得表记录时自己加上序号列,如果定义自动编号的,如果删除了数据,中间就少号,这样序号是不连续的,用临时表可以实现,感觉不是很简单,如果对于复杂的表就不太适用。。

#18


很显然,你想直接用这个行号计算某些东西,如果表中记录不是太多
那么,用临时表或是select (select count(*) from...)的方法都可以

comszsoft(星星点灯)的方法是vb或者asp中的方法,可以参考

#19


如何让从数据库中查询出符合条件的记录,然后给每个记录自动加上序号,序号是根据符合条件的记录多少在随时变化.而且也会在以查询生成的报表中显示出来.谢谢

#20


此序号不是数据库的储存记录的数据表中的自动生成的序号.因为查询出来的符合条件的记录的此序号是不连续的

#21


相当于给符合条件的记录加上行号

#1


Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a

#2


如果可用臨時表:
select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

但很多條件下用臨時表不方便,不用臨時表又得新建一個物理表,幫你頂!

#3


frewin的應該可以,我剛剛才想到了

#4


Select top 100 序号=Identity(int,1,1),usid,usname Into #temptable From users
Select * From #temptable  
Drop Table #temptable

#5


如果数据量大的话,这种方式效率很低:
Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a

#6


? 如何讓效率高

#7


“如果数据量大的话,这种方式效率很低:
Select (Select Count(*) From users where usid<=a.usid ) as 序号,a.usid,a.usname  
from  users a”

-------------这个肯定是的~~~
所以我建议有局部临时表

#8


if you want to use by ado,then you can use it follow next
 set rs.cursorlocation=3
 rs.open sql,conn,3,2
 rs.bookmark  // the value of rs.bookmark is 1,2,3,4,...
 

#9


what's mean

#10


如果可用臨時表:
select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#11


to:comszsoft 
your answer is nothing to this question

#12


我觉的````long0104的方法会好点吧
我要提供的也是这个方法

#13


select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#14


你这可以让前台去做啊,不一定要SQL来实现的,而且你又不要用临时表,那只能前台显示了

#15


select identity(int,1,1) as 序號,usid,usname into #1 from 表
select * from #1

#16


想到一个办法。首先说sorry,早上在繁体的机器上不好打中文。
先分析一下你的问题,
情况1、你要用前台程序来调用sql的话,就可以用rs.bookmark,上面已经说了;
情况2、你是要在数据库中显示像你说得那样的信息的话,就可以考虑把表机构修改一下,在前面加一个自动编号字段,不然搞不清你想干什么?
应该写出你的想法,让大家帮你考虑更好的解决之道

#17


我是想的是在取得表记录时自己加上序号列,如果定义自动编号的,如果删除了数据,中间就少号,这样序号是不连续的,用临时表可以实现,感觉不是很简单,如果对于复杂的表就不太适用。。

#18


很显然,你想直接用这个行号计算某些东西,如果表中记录不是太多
那么,用临时表或是select (select count(*) from...)的方法都可以

comszsoft(星星点灯)的方法是vb或者asp中的方法,可以参考

#19


如何让从数据库中查询出符合条件的记录,然后给每个记录自动加上序号,序号是根据符合条件的记录多少在随时变化.而且也会在以查询生成的报表中显示出来.谢谢

#20


此序号不是数据库的储存记录的数据表中的自动生成的序号.因为查询出来的符合条件的记录的此序号是不连续的

#21


相当于给符合条件的记录加上行号