[SQL] 怎么从子查询结果中取值

本文详细介绍了如何在SQL中有效地从子查询结果中获取值,通过实例讲解了子查询的应用,包括嵌套子查询、联接子查询以及如何在主查询中使用子查询结果。无论你是初学者还是进阶者,都将从中获益,提升SQL查询能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
昨天,在EH看到一位朋友,问怎么从一堆成绩单中,找出每科成绩排名在最后10%的名单及其名次;
不过,他要求的是让人用VBA帮他~~~而我,这几天刚好兴起在学SQL,于是就拿来练练手……
不试不知道,一试就困惑了……
 
当然,我这种入门者,必然是一步步来的,先是用下面的语句返回一个包括排名的表,结果也很正确,如下:
(源表格上只有学号、姓名、成绩,而没有名次)
 
 
然后,顺着这条思路,把上面的代码作为子查询来用,取其中的TOP 10 PERCENT,那么应该就是我要的结果了,
代码如下:
 
 
可出來的结果让人蒙了……名次全都是1,而非所谓的20、19~~百思不得其解啊!
 
 
于是,跑到ET上开帖问高手,因为ET有很多SQL高手,小7就是其中一员……
不过,小7竟然说这也是一个难题,他也还在思考……
然后,是wjc 小胖给解决了……而思路却是截然相反的!
我的思路是从排好名次的子表中取出前10%,
而wjc的思路却是从前10%中取出相应的学号、姓名、名次……
思路上看不出有什么问题,但事实是,他的代码成功了:
 
 
 
当然,觉得奇怪的还有别人—— amulee版
 
这代码是在我的思路基础上修改的,将10%改为2就可以得到正确的名次,
但不知原因何在!
 
这代码是在wjc的思路基础上,将原来的代码再嵌套一个Where就可以得到正确的结果。
 
------未有結論,待續
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值