求取得行号的SQL语句(100分)

  • 主题发起人 主题发起人 DJ.
  • 开始时间 开始时间
D

DJ.

Unregistered / Unconfirmed
GUEST, unregistred user!
本人用的数据库是sybase SQL Anywhere,若用表的行号替换某字段,怎么写这个SQL?
 
附加功能 将问题提前
 
RECNO 对sybase SQL Anywhere无意义
因此,不好办
 
sybase SQL Anywhere 没用过,可不可以说一下你的行号的概念,是自己定义的,
还是系统自带的?
 
行号可认为是查询结果的记录顺序号
 
table1可以用query1代替
下面贴一段郭镇松老弟的代码(来获得recno):
>>to jqw :
>> 我知道 recno 在sql数据库中不对,但也可以自己去做这个属性的。
用 moveby 来实现,比如,得到当前记录行:
oldrec := table1.moveby(-maxint);
table1.moveby(oldrec);
这样表的记录指针不变,oldrec就是对应的recno值了。
再如设置recno值:
table1.first;
table1.moveby(rec); // rec为需要设置的行号。

 
>> jqw
此法还不是很好,数据量大时,速度太...
 
使用书签试试
 
首先对表结构进行修改,增加一个自动编号字段,然后用自动编号字段的值替换你自己的字段,
类似(update form1 set a=b),其中B是自动编号字段。然后再更改表结构,将自动编号字段去掉。
大功告成。
 
如何增加自动编号字段?
 
可以用这种方法,但是记录数多时,性能会极快的下降。因为每生成一行,进行一次
表扫描。
select (select count(distinct t2.c_id) from tab_client as t2
where t2.c_id>=t1.c_id) as rank,c_id,c_name from tab_client as t1
where c_id is not null order by rank
 
多人接受答案了。
 
后退
顶部