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; 该如何理解 展开
其中 where (select count(1) from sc r2 where r2.cno=r1.cno and r2.score >= r1.score) <=2; 该如何理解 展开
1个回答
展开全部
首先,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"。
说的比较复杂,不知道你懂了没
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"。
说的比较复杂,不知道你懂了没
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询