| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6228 人关注过本帖, 2 人收藏
标题:vfp用sql如何取出每个班中的前3名
只看楼主 加入收藏
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:0 
以下是引用djszyyc在2013-3-17 15:50:37的发言:

这条语句为何不能执行
select 班别,姓名,成绩 from cj r1 where(select count(1) from cj r2 where r2.班别=r1.班别 and r2.成绩>= r1.成绩)<=3 order by 班别,成绩
看不明,SQL还是标准些好
2013-03-17 15:58
djszyyc
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-3-17
收藏
得分:0 
谢谢bccn201203,你的解答最简洁,但能否用一条SQL解决呢
2013-03-17 16:02
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
回复 12楼 djszyyc
一句SQL还没想明白
2013-03-17 16:09
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
与楼主同等更简洁的解决方法。
2013-03-17 16:14
djszyyc
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-3-17
收藏
得分:0 
回复 14楼 taifu945
是什么呢?能否告知
2013-03-17 16:33
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
7楼 8楼的就不错
2013-03-17 16:43
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用djszyyc在2013-3-17 16:33:38的发言:

是什么呢?能否告知
我个人认为,因为VFP的局限,所以你这题只有两种方法去解决:代码更容易懂的方法:7、8楼;一条命令可以解决的方法:我的方法(6楼)。反正你自己去看了,需要哪种方法。对于本题,我个人更倾向于7、8楼的方法,便于后期维护。我弄了一条很复杂的SELECT-SQL命令只是因你要求一条SQL命令解决的缘故。
2013-03-17 18:01
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
SELECT * FROM T A WHERE 3>(SELECT COUNT(*) FROM T WHERE BJ=A.BJ AND CJ>A.CJ) ORDER BY A.BJ,A.CJ DESC
图片附件: 游客没有浏览图片的权限,请 登录注册

2013-03-17 18:03
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
代码非我原创,来源于:http://bbs.
只是把其中的字段修改了一下,只是为了满足楼主的愿望而已。
我记得是CSDN论坛一位版主的原创!
2013-03-17 18:06
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用bccn201203在2013-3-17 18:03:05的发言:

SELECT * FROM T A WHERE 3>(SELECT COUNT(*) FROM T WHERE BJ=A.BJ AND CJ>A.CJ) ORDER BY A.BJ,A.CJ DESC
我试了一下,基本好用,但“3>”应改为“3>=”。经我测试,有个bug,用我6楼截图中的原始数据,01班的第3名出不来,也就是“张三 78分”的那条记录没有。不知道何故。
2013-03-17 18:12
快速回复:vfp用sql如何取出每个班中的前3名
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026289 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved