以下是引用taifu945在2013-3-17 19:29:45的发言:
楼主的要求是前3个人,但正如2楼所说,前3人和前3名是不同的概念。我在6楼的代码是人、名通吃,而只需要前3人的代码我觉得18楼显然更简洁、易懂(子查询越多,代码就越生涩)。
我看了一下你的回复,有时你说前3人,有时又前3名
现我重新定义一下:
1、前3人 --DBF 表 每班的前3条记录(不管成绩高低)。
2、前3名--每班按成绩由高到低排序后,取前3名称(不考虑同成绩因素)
你觉得楼主的意思是取哪一种? 而我以下语句结果又是哪一种?
SELECT a.* FROM (select *,RECNO() id FROM (SELECT * FROM cj ORDER BY 班别,成绩 desc) d1) a,(SELECT 班别,MIN(id) id FROM (select *,RECNO() id FROM (SELECT * FROM cj ORDER BY 班别,成绩 desc) d2) D3 GROUP BY 班别 ) b WHERE a.班别==b.班别 AND a.id<=b.id+2
(我的答案就是 第 2 种情况)
[
本帖最后由 kiff 于 2013-3-18 08:57 编辑 ]