采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
请问老师,在最后一个练习中为什么用EXISTS实现,WHERE中需要有t2.student_id=t1.id,而用IN实现却不需要?这个EXISTS的用法还是不太懂,是针对什么不存在的?
EXISTS表示是否存在,t2.student_id=t1.id中t2表示子表,t1是父表,子表的student_id等于父表的id。
IN其实是把结果先查询出来,然后判断是否在列表内
IN我能够理解,但是WHERE里的NOT EXISTS 返回的是什么,它不像IN之前有t1.id这种指向的对象啊?为什么EXISTS里面要有父表和子表的关联而IN里面不需要?
EXISTS的返回你可以理解为布尔值,如果有记录返回则为true,如果没有记录返回,则为false。 第二个问题:EXISTS子句为何要关联,不妨这样理解:父表已经查到了每个学生,每一行是一个学生,子表是学生成绩,每个学生有多个成绩,需要将学生和成绩关联上,这样你才知道学生有没有语文题成绩。
另外一个问题,为何IN不需要关联父表?注意我们这里使用的是排除法:先找到有语文成绩的学生ID,然后使用NOT IN,即:查询时将这批学生ID排除在外。仔细琢磨一下。如果实在理解不了,你可以尝试按照你的思路写出来,然后我们一起来分析探讨一下
登录后可查看更多问答,登录/注册
零基础快速进阶,专为只懂Python语法的同学设计
978 11
739 9
645 7
700 7
730 6