如何用SQL语句实现这样的功能?(100分)

  • 主题发起人 主题发起人 linkman
  • 开始时间 开始时间
L

linkman

Unregistered / Unconfirmed
GUEST, unregistred user!
查询并排序,再将结果的某一字段按排列的顺序自动编号,编号的基值可能不是1.
例如:将结果的第一条纪录的字段A改为100,第二条纪录的字段A改为101,第三条纪录的字段A改为102......
能不能用一个SQL语句实现?
 
SELECT IDENTITY(int,100,1) AS ID,fieldA,FieldB.. FROM tab ORDER BY FieldN
 
刚才在Access中试了一下,系统不认IDENTITY,另,如何实现更改呢?
不好意思,我对SQL的高深问题用得少.
 
>>ysai
我试了好像不行嘛!(我用SQLServer试的)
 
如果你的数据库是SQL server,先创建一个临时表
如:
在ADOQuery的Sql里加入:
creat table #Tb_101(ID int Indentity(100,1),FieldA varchar……)
insert into #Tb_101(ID ,FieldA ……)
select FieldA……
from table

select * from #Tb_101 order by ID


 
你们还没明白我的意思:
[文档表]中有字段[件号]
var p:integer;

p:=100;//或别的值

with query do
try
SQL.Clear;
SQL.add(select * from 文档表 where ....;);
open;
first;
while not eof do
edit;
fieldbyname('件号').asinteger := p;
inc(p);
next;
end;
finally
close;
end;
上面的程序能不能用一个SQL语句实现.
 
用存储过程是可以的。 一个语句,好象很难。

update 文档表 set 件号=@@row? SQLServer好象有个@@row系统变量返回记录行号的。
 
access 中肯定不行。
自己选择自动编号类型 字段吧
 
还用存储吧...省事多了...
 
想了一下,一条sql好象实现不了.
 
那我的分该给谁呢?
 
忘了,要用临时表才行,SQL SERVER:
SELECT IDENTITY(int,100,1) AS ID,fieldA,FieldB....
into #temptab
FROM tab ORDER BY FieldN;
select * from #temptab;
 
呵呵,好的!谢谢!(不过这样玩也只能对于小数据量了,太大的话导入临时表会很慢的吧)
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部