sql.Add('select top 3 chengji,name from(select * from tab order by chengji desc)'); 这样就可以了 如果要查看姓名 用FieldByName就可以了
-------------------------------------------------------------- 我的例子如下 (delphi6下测试,用a,b代替字段chengji、name,表tab代替people) procedure TForm1.Button1Click(Sender: TObject); begin with adoquery1 do begin sql.Clear; sql.Add('select top 3 a,b from(select * from tab order by a desc)'); open; while not eof do begin Showmessage(FieldByName('b').AsString); Next; end; end; end;
SELECT * FROM people WHERE (chengji IN (SELECT TOP 3 chengji FROM people ORDER BY chengji DESC))
偶支持 ghy412(用心良苦)的思路,一般前三名的成绩可能有好几名 100,99,99,98,98,98 在楼上的基础上加一个过滤: SELECT * FROM people WHERE (chengji IN (SELECT distinct TOP 3 chengji FROM people ORDER BY chengji DESC))
我觉得: 假设有前五个分数 第一名:100 第二名:99 第二名:99 第三名:98 // 第四名:98 第三名:98 // 第四名:98所以正确的结果就应该是: 第一名:100 第二名:99 第二名:99如果这样的话 这个语句就可以满足,不需要子查询。select top 3 with ties chengji,name from people order by chengji desc ps:楼主出来说句话呀,到底那个是想要的结果?
我对sql不很熟,你查下它里面有什么函数可以用
order by chengji desc
这样就可以了
如果要查看姓名
用FieldByName就可以了
我的例子如下
(delphi6下测试,用a,b代替字段chengji、name,表tab代替people)
procedure TForm1.Button1Click(Sender: TObject);
begin
with adoquery1 do
begin
sql.Clear;
sql.Add('select top 3 a,b from(select * from tab order by a desc)');
open;
while not eof do
begin
Showmessage(FieldByName('b').AsString);
Next;
end;
end;
end;
FROM people
WHERE (chengji IN
(SELECT TOP 3 chengji
FROM people
ORDER BY chengji DESC))
100,99,99,98,98,98
在楼上的基础上加一个过滤:
SELECT *
FROM people
WHERE (chengji IN
(SELECT distinct TOP 3 chengji
FROM people
ORDER BY chengji DESC))
select top 3 with ties chengji,name from people order by chengji desc
为什么要用子查询呢?
刚建了个表试了一下,加了些重复值,以下语句能通过:
SELECT *
FROM people
WHERE (chengji IN
(SELECT DISTINCT TOP 3 chengji
FROM people))
ORDER BY chengji DESC
假设有前五个分数
第一名:100
第二名:99
第二名:99
第三名:98
第三名:98如果不加DISTINCT,结果是:
第一名:100
第二名:99
第二名:99而真正第三名的分数则被忽咯
的考虑比较全面些
假设有前五个分数
第一名:100
第二名:99
第二名:99
第三名:98 // 第四名:98
第三名:98 // 第四名:98所以正确的结果就应该是:
第一名:100
第二名:99
第二名:99如果这样的话 这个语句就可以满足,不需要子查询。select top 3 with ties chengji,name from people order by chengji desc
ps:楼主出来说句话呀,到底那个是想要的结果?