怎样用SQL语句生成行号

时间:2021-04-10 10:34:32
有这样一个表
Order_ID  Name  Age ...
Null      LiuZY  22
Null      You    65
Null      Her    56
        .
        .
        .

其中Order_ID是记录显示的顺序,现在要生成行号,结果如下:
Order_ID  Name  Ago ...
  1      LiuZY  22
  2      You    65
  3      Her    56

用SQL语句怎么写呀?请高手指导!SQL中可有类似RECNO()这样的函数,有谁有SQL函数的电子文档?

5 个解决方案

#1


为什么不用自增类型字段?

#2


不同的SQL SERVER有不同的函数集,如果你用MS SQL Server, 在它安装后有个很完全的帮助。
关于这里的行号,用一段SQL程序或一个存储过程,其中使用一个游标,然后填写行号是一定可以的。
也可以定义一个自增的字段,初值1、步长1,并按这个字段建立唯一索引,也能达到行号的效果,但如果进行了删除,就会出现空行号。

#3


select
  (select count(*) from mytable b where b.age < a.age) as Order_ID,
  Name, Age
from
  mytable a
order by
  Age;

试试看。这种方法要求按某个字段排序才可。应该不是过份的要求,假如你需要序号的话。
不过老实说,当你的记录较多时,这个句子对数据库的考验可能比较大。
  

#4


上面的方法是绝对可以实现的,不过时间复杂度太多,但对于你所说的问题,完全可以用自增字段来解决,或者在程序中用自己的字段,但在程序的每一个Insert操作中,都必须找到最大的Id值来写入,才能实现你所想要的效果,综合:最好的方法,自增字段

#5


你如果使用的光标类型为静态的,可以读Select后得到的结果集的Recnon即可实现行号

#1


为什么不用自增类型字段?

#2


不同的SQL SERVER有不同的函数集,如果你用MS SQL Server, 在它安装后有个很完全的帮助。
关于这里的行号,用一段SQL程序或一个存储过程,其中使用一个游标,然后填写行号是一定可以的。
也可以定义一个自增的字段,初值1、步长1,并按这个字段建立唯一索引,也能达到行号的效果,但如果进行了删除,就会出现空行号。

#3


select
  (select count(*) from mytable b where b.age < a.age) as Order_ID,
  Name, Age
from
  mytable a
order by
  Age;

试试看。这种方法要求按某个字段排序才可。应该不是过份的要求,假如你需要序号的话。
不过老实说,当你的记录较多时,这个句子对数据库的考验可能比较大。
  

#4


上面的方法是绝对可以实现的,不过时间复杂度太多,但对于你所说的问题,完全可以用自增字段来解决,或者在程序中用自己的字段,但在程序的每一个Insert操作中,都必须找到最大的Id值来写入,才能实现你所想要的效果,综合:最好的方法,自增字段

#5


你如果使用的光标类型为静态的,可以读Select后得到的结果集的Recnon即可实现行号