发现一个很有意思的sql语句

select sc1.sno
from (
select sno
from sc
group by sno
having count(*)=(
select count(*) from sc where sno='1002')) sc1, sc
where sc1.sno=sc.sno and cno in(
select cno from sc where sno='1002')
group by sc.sno
having count(*)=(
select count(*) from sc where sno='1002');
1、先在子查询找到1002所选的课数,2、找出选课数相等的学生学号并命名法新表sc1,3、sc1和sc连接后,可以排除掉所有选课数目不等于1002的学生的选课记录,4、重复上个答案的1、2,5、重复上个答案的3、4操作,得出答案。
阅读到的文章
这篇博客探讨了一个复杂的SQL查询,其目的是找出所有选课数量与学号为'1002'的学生相同的其他学生。查询通过子查询首先确定'1002'的选课数,然后在主查询中匹配选课数相同的学生,并排除掉与'1002'选课记录相同的记录。这个例子展示了高级SQL操作和聚合函数的应用。

835

被折叠的 条评论
为什么被折叠?



