查找的问题!

hnflavor 2004-09-03 01:17:00
求一个select语句,ADO + SQL Server 2k
在表 mytable中有个pirce字段,找出第n小price,n为变量,由用户输入!
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnflavor 2004-09-03
  • 打赏
  • 举报
回复
感觉还没解决...因为如果价格相同,那么top N就不确定了.
沧海桑人 2004-09-03
  • 打赏
  • 举报
回复
with ADOQuery1 do
begin
close;
sql.Text := 'select top ' + inttostr(n) + '* from PhoneCall order by charge';
open;
last;
edit1.text := currtostr(fieldbyname('charge').ascurrency);
end;
shitianj 2004-09-03
  • 打赏
  • 举报
回复
实际上一楼的已经解决问题了,但好像方法有点不直接
这应该是标准SQL的知识
soyisoft 2004-09-03
  • 打赏
  • 举报
回复
没写完,不好意思 :-)

ADOQuery1.SQL.ADD('Select Top 1 * From (Select Top '+ n +' * From MyTable order by price) T1 order by price Desc');

这样直接就得到你要的行了。
shbjwq430105 2004-09-03
  • 打赏
  • 举报
回复
学习中
soyisoft 2004-09-03
  • 打赏
  • 举报
回复
看看这样如何

ADOQuery1.SQL.ADD('Select Top 1 * From (Select Top '+ n +' * From MyTable order by price) T1 order by price Desc
qizhanfeng 2004-09-03
  • 打赏
  • 举报
回复
学习
up
挺有意思的
ghy412 2004-09-03
  • 打赏
  • 举报
回复
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.ADD('Select * From MyTable Order by price');
ADOQuery1.Open;
for i:=0 to n-1 do
ADOQuery1.Next;
Edit1.Text:=CurrtoStr(ADOQuery1.FieldByName('price').AsCurrency);

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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