小罗啊哈

2020-05-06   阅读量: 688

Mysql

语句的内在运行顺序,欢迎朋友补充

扫码加入数据分析学习群

今天看到一个经典题目,“查询每门课程的第二第三名”

在学习开窗函数过后知道了可以用rank开窗函数做,

但是如果用方法二的运算如下:

select * from sc sc1 where (select sum(score>sc1.score) from sc where c_id=sc1.c_id) in (1,2);

这行代码的内在运行顺序特别重要:

首先是sc1遍历,第一条取出来后,sc1.score成为常量,参与子查询,子查询结果作为where条件进行判断是否输出sc1这一行,而后sc1第二行同理。

这样总结出来,感觉是外层查询先遍历,但是内层查询先运算?

不知道这样理解是不是对的。。。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
97.6824 4 8 关注作者 收藏

评论(0)


暂无数据

推荐课程