千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > wherenotexists详解

wherenotexists详解

来源:千锋教育
发布人:xqq
时间: 2023-11-24 12:57:19 1700801839

一、wherenotexists介绍

wherenotexists是SQL语言中的一种筛选条件,用于查询一个表中不符合指定条件子查询结果的记录集合。

在数据库操作过程中,筛选条件在实现数据的准确性上具有重要的作用。wherenotexists常用于实现关系型数据库项之间的筛选,以及多表联合查询时对某些特定条件的记录排除后进行筛选。

它不能单独使用,需要和Select、From、Where等SQL语句联合使用。常用的SQL实现方式有两种:一种是使用Not Exists子查询,另一种是使用Left Join遇Null筛。

二、Not Exists子查询方式

Not Exists方式在筛选条件需要从结果集中剔除掉一部分数据时用到,对于复杂查询来说尤为重要。

下面是Not Exists方式的代码示例:


SELECT id FROM student WHERE NOT EXISTS (
    SELECT id FROM course WHERE student.id = course.student_id
);

该SQL语句的作用是查询student表中选课记录为空的学生的id。

首先查询的是student表的id列,接着从course表中查询所有选课学生的id,并将两个结果集做inner join,得到重合的记录。由于我们关注的是没有选课的学生,需要从结果集中剔除掉重合的记录,需要用到Not Exists条件。

三、Left Join遇Null筛方式

Left Join遇Null筛方式是在筛选条件为null时使用的情况。当筛选不等于null时,Left Join遇Null方式也可以使用,但不如Not Exists方式高效。

下面是Left Join遇Null方式的代码示例:


SELECT id FROM student LEFT JOIN course ON student.id = course.student_id WHERE course.id IS null;

该SQL语句的作用与Not Exists方式类似,也是查询student表中选课记录为空的学生的id。我们使用Left Join操作将两个表打通后,以course表中选课记录为关键列,再使用Where筛选条件,将结果集中选课记录为空的学生剔除,得到需要的结果。

四、wherenotexists运用场景

wherenotexists适用于多表联合查询,筛选条件为不符合指定条件子查询结果的记录集合的情况。

在实际应用中,当需要查询满足一定条件,但是又不能满足特定条件的结果时,就需要用到wherenotexists。

比如,在一个学生选课系统中,如果需要筛选没有选课的学生,就可以使用上述的Not Exists方式或Left Join遇Null筛方式。

五、总结

wherenotexists是SQL语言中常用的筛选条件,适用于多表联合查询,筛选条件为不符合指定条件子查询结果的记录集合的情况。Not Exists子查询方式和Left Join遇Null筛方式都能使用wherenotexists条件,其中Not Exists方式适用于需要从结果集中剔除掉一部分数据的情况,而Left Join遇Null方式适用于筛选条件为null的情况。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT