mysql查询每科成绩前两名

selectsno,cno,scorefromscr1where(selectcount(1)fromscr2wherer2.cno=r1.cnoandr2.score>... select sno,cno,scorefrom sc r1 where (select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score) <=2;
其中 where (select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score) <=2; 该如何理解
展开
 我来答
day0by0day00
2018-01-19 · 超过14用户采纳过TA的回答
知道答主
回答量:27
采纳率:72%
帮助的人:11.3万
展开全部
首先,select count(1)表示查询出表中符合条件的行数;
r2.cno=r1.cno and r2.score >= r1.score表示查询条件;
select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score总体的意思就是从表r2中查询出满足r2.cno=r1.cno and r2.score >= r1.score条件的行数;
结合完整的sql语句来看,这个查询出的行数要<=2,所以"行数<=2"是作为前一个查询语句的查询条件的。
这样这个语句简单点理解就是:从r1表查询sno,cno,score这三列,查询条件是"行数<=2"。
说的比较复杂,不知道你懂了没
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式