请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

EXISTS与IN

请问老师,在最后一个练习中为什么用EXISTS实现,WHERE中需要有t2.student_id=t1.id,而用IN实现却不需要?这个EXISTS的用法还是不太懂,是针对什么不存在的?

正在回答

1回答

EXISTS表示是否存在,t2.student_id=t1.id中t2表示子表,t1是父表,子表的student_id等于父表的id。

IN其实是把结果先查询出来,然后判断是否在列表内

0 回复 有任何疑惑可以回复我~
  • 提问者 ITMOCC #1
    IN我能够理解,但是WHERE里的NOT EXISTS 返回的是什么,它不像IN之前有t1.id这种指向的对象啊?为什么EXISTS里面要有父表和子表的关联而IN里面不需要?
    回复 有任何疑惑可以回复我~ 2021-08-08 22:41:46
  • NavCat 回复 提问者 ITMOCC #2
    EXISTS的返回你可以理解为布尔值,如果有记录返回则为true,如果没有记录返回,则为false。
    第二个问题:EXISTS子句为何要关联,不妨这样理解:父表已经查到了每个学生,每一行是一个学生,子表是学生成绩,每个学生有多个成绩,需要将学生和成绩关联上,这样你才知道学生有没有语文题成绩。
    回复 有任何疑惑可以回复我~ 2021-08-08 23:56:05
  • NavCat 回复 提问者 ITMOCC #3
    另外一个问题,为何IN不需要关联父表?注意我们这里使用的是排除法:先找到有语文成绩的学生ID,然后使用NOT IN,即:查询时将这批学生ID排除在外。仔细琢磨一下。如果实在理解不了,你可以尝试按照你的思路写出来,然后我们一起来分析探讨一下
    回复 有任何疑惑可以回复我~ 2021-08-08 23:59:58
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信