Mysql关于查询语句中“所有都“用EXISTS方法的理解

26 篇文章 3 订阅
订阅专栏

EXISTS:查询有结果则返回真值,查询为空则返回false。
NOT EXISTS:查询有结果返回false,查询为空返回true。

假设现在有三张表:

student

course

sc

业务:查询选修了所有课程的学生姓名

思路:查询了所有选修课程的学生,那么即找到某一个学生中存在有一门没有选到的就排除该学生剩下的就是都选修课程的学生

执行语句:

-- 建表
create table student(
  sno char(4) primary key
);
create table course(
  cno char(2) primary key
);
create table sc(
    sno char(4),
    cno char(2),
    primary key (sno,cno)
);
insert into student values (001);
insert into student values (002);
insert into course values ('a');
insert into course values ('b');
insert into course values ('c');
insert into sc values (001,'a');
insert into sc values (001,'b');
insert into sc values (002,'a');
insert into sc values (002,'b');
insert into sc values (002,'c');


--执行语句

SELECT Sno  
FROM Student   
WHERE NOT EXISTS  
(SELECT * FROM Course WHERE NOT EXISTS  
     (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno)  
);  

语句执行的具体过程:

具体思路: 

1.要先找到某一个同学,看他所选的课程中是否全部包含course表中的课程,而sc表是选修了课程的学生才会被放进去,而且连接了student表和course表。因为一个表有很多个同学,每个同学又有很多课,所以就有了两层循环,最大那层循环(同学表)就在最外面,其次就是对应同学选的课的,最后一层是用来给两张表做校验的。所以就先找到一个同学,比如说1号,在sc表中先用student和sc共有的sno找到他和他对应的信息(包括他选修的课程)“SELECT * FROM SC WHERE Sno=Student.Sno” ; student循环会先传第一个元组(1号)进来第二个NOT EXISTS 的语句中

2.然后再看得出的目前1号学生所含有的课程中和course表中课程有没有对应不上的"SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=Course.Cno" 然后course里会传一个元组(a)进来,看sc中1号能和a匹配上的,就会留下,然后继续和b、c匹配,执行第二层course循环。匹配到c的时候发现1号并没有c这个课程则select *就选不出这个人,NOT EXISTS中就是空值,就返回TRUE,然后再返回给第二层的NOT EXISTS,第二层的NOT EXISTS检测到为TRUE(即有东西),就返回FALSE,所以1号不会被select name打印

3.2号也是如此

mysql多表查询和EXISTS查询性能对比
07-24
mysql多表查询和EXISTS查询性能对比
mysql exist
weixin_34414196的博客
08-21 272
2018-8-21 15:00:55 星期二 写了这么久SQL, 第一次去了解 exists 语句, 惭愧... 1. exists 后边的语句相当于bool判断, 如果能返回记录, 就代表true, 查不到记录就相当于false,  也就是说要么查询所有, 要么没有数据 select * from user where exists (select 1)  等价于  select * fr...
MySQL子查询(一)—— EXISTS与IN
lidan3959的专栏
12-03 906
EXISTS是一个非常强大的谓词,它允许数据库高效地检查指定查询是否产生某些行。通常EXISTS的输入是一个子查询,并关联到外部查询,但这并不一定是必须的。根据子查询是否返回行,该谓词返回TRUE或FALSE。例如下面的SQL语句: SELECT customerid,companynameFROM customers AS AWHERE country = 'Spain'     AND EX
Mysqlexist查询
一直问自己怎样才能把程序写的更好? 编程境界:干净利落,没有任何多余步骤。 动态能力:反应,逻辑思维
10-11 1316
<br /><br />   最近做公司OA系统开发,在数据库的操作上有些分享。今天正好做一个查询,两个表过滤数据,当T1字段F1在T2表的F2存在时,返回这条件数据。刚刚开始觉得简单,就想到子查询和连接查询,但是发现两个表如果数据量多时,这样就不行,并且效率不高,后来想到用Mysql的In函数,当用完后,也做出来了。但是想了一下,觉得应该有更好用的才对,于是打开MYSQL手册,查IN,结果找到exist函数。<br />exist:用法如下:<br />select * from T1 wher
对比分析MySQL语句的IN 和Exists
09-09
MySQL,`IN` 和 `EXISTS` 都是用来在查询进行子查询比较的两个关键字,但它们的工作方式和性能表现有所不同。通常,关于它们的效率比较存在一定的误解,这需要根据具体情况进行分析。 首先,`IN` 会将外部表...
MySQLexists关键字和in的区别有那些? SQL语句优化有那些方法? 查询速度很慢应该怎么办?
12-14
MySQL数据库exists和in是两种常用的子查询比较方式,它们在性能上有显著的差异。exists使用方式是检查子查询结果是否存在匹配的记录,它会根据outer表的记录逐条进行比较,因此outer表的记录越少,exists的...
sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
09-14
本文将探讨使用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句的优化方法。 存在的优点 在子查询,NOT IN子句将执行一个内部的排序和合并,无论在哪种情况下,NOT IN都是最低效的(因为它对子查询的表执行了一个...
Shell脚本执行sql语句操作mysql的5种方法
09-15
通过上述介绍,我们可以看到,在Shell脚本执行SQL语句操作MySQL数据库有多种方法可供选择,每种方法都有其适用的场景。在实际应用过程,可以根据具体情况灵活选择合适的方法,以达到最佳的效果。同时,也需要...
Mysql学习(十)-- Mysql子查询关键字的使用(in和exists
热门推荐
weixin_39724194的博客
03-09 1万+
1. all 1.1 格式: 1.2 特点: all:与子查询返回的所有值比较为true则返回true all可以与=,>=,>,<,<=,<>结合使用,分别表示等于,大于等于,大于,小于,小于等于,不等于其的所有数据 大于all表示指定列的值必须要大于子查询集的每一个值,即必须要大于子查询集的最大值;如果是小于即小于子查询的最小值。 1.3 操作: 2. any(some) 1.1 格式: 1.2 特点: any:与子查询返回的所有值比较为true则
MySQL入门学习-子查询.EXISTS
最新发布
weixin_69763181的博客
06-17 653
例如,可以使用子查询 EXISTS 检查子查询结果集是否存在特定的值,或者使用子查询 EXISTS 与其他操作符结合使用,以实现更复杂的条件判断。与其他子查询类型相比,子查询 EXISTS 在某些情况下更高效,特别是在子查询结果集较大且只关心结果集是否为空的情况下。子查询 EXISTSMySQL 的一种子查询类型,用于检查子查询结果集是否为空。否则,返回 FALSE。子查询 EXISTS 的使用方法是在查询语句嵌套一个子查询,并使用 EXISTS 关键字指定子查询结果集是否为空。
MySQL入门·子查询】11.4 EXISTS
Python老吕的博客
05-13 1228
EXISTS作为MySQL一个重要的子查询关键字,为处理存在性检查提供了强大的支持。通过合理使用EXISTS,我们可以编写出逻辑清晰、性能高效的SQL查询,满足复杂的数据处理需求。随着数据库技术的不断发展和数据量的不断增长,对于查询性能的要求也越来越高。因此,在未来,我们还需要继续探索和研究如何更好地利用EXISTS以及其他SQL特性来优化查询性能,提高数据库应用的可靠性和响应速度。我们也应该关注数据库技术的发展趋势和新兴技术,如分布式数据库、内存数据库等,以便在需要时能够灵活应对各种挑战和需求。
mysql 相关自查查询之 EXISTS 和 NOT EXISTS
GSON的博客
01-11 3504
MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT … FROM table WHERE EXISTS (subquery) 该语法可以理解为:将主查询的数据,放到子查询做条件验证,根据验证结果(TRUE 或 FALSE)来决定主查询的数据结果是否得以保留。 范例一: 下面以实际的例子来理解 EXISTS 子查询。下面是原始的数据表: article 文章表: aid title content uid 1 文章1 文章1正文
MySQL in和exists 查询分析
神韵
08-31 3188
in和exists执行时,in是先执行内查询,然后再执行外查询。而exists查询它是先执行外查询,然后再执行内查询(这里的内外查询不理解可以结合上面的分析理解)。exists和in在执行时效率单从执行时间来说差不多,exists要稍微优干in,在使用时一般应该是用exists而不用in。如果内查询得出的结果集记录较少,外查询的表较大且又有索引时应该用in,反之如果外查询记录较少,内查询的表大,又有索引时使用exists。...
SQL别再 count 判断数据十分存在了,很耗费时间的!
6个日的博客
07-14 355
根据某一条件从数据库查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢? 无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count 目前多数人的写法 多次REVIEW代码时,发现如现现象: 业务代码,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下 #### SQL写法: SELECT count(*) FROM table WHERE a = 1 AND b = 2 ##
MySQL子查询(关键字any,all,exist,in,以及算术运算符的使用)
m0_56245143的博客
02-19 816
先引入子查询的基本概念,它实际上是一个完整的条件查询语句,只是这个语句恰好又是外面语句的一个查询的条件,即查询的嵌套问题。在子查询通常可以使用比较和运算符这些,以及in,any,all,exists等的关键字。下面我们进入学习关键字。
mysql in existnull,Mysql NULL导致的神坑
weixin_28718345的博客
03-17 307
比较运算符使用NULL结论:任何值和NULL使用运算符(>、=、<=、!=、<>)或者(in、not in、any/some、all)比较时,返回值都为NULL,NULL作为布尔值的时候,不为1也不为0。准备数据上面3条数据,认真看一下,特别是注意上面NULL的记录。IN、NOT IN和NULL比较IN和NULL比较结论:当IN和NULL比较时,无法查询出为NULL的记录...
mysql 返回true_MySQL查询返回TRUE为具有正值的行?
weixin_39785400的博客
01-19 1977
要为正值返回TRUE,为负返回FALSE,请使用MySQL IF()。让我们首先创建一个表-createtableDemoTable2038->(->IdintNOTNULLAUTO_INCREMENTPRIMARYKEY,->Valueint->);使用插入命令在表插入一些记录-insertintoDemoTable2038(Value)...
mySql查询有数据返回true否则返回false
weixin_44538411的博客
02-01 1158
MySQL查询到数据时返回true,查不到数据时返回false。
写文章

热门文章

  • 一文全解决 数据库连接报错Communications link failure,create connection SQLException 19094
  • 最全解决:微服务之间调用出现Load balancer does not have available server for client 14927
  • 极简并优雅的在IDEA使用Git远程拉取项目、本地推送项目、合并分支和版本回撤 14207
  • discard long time none received connection 12976
  • JavaFX环境配置(配jdk版本和javafx版本对应) 11201

分类专栏

  • 杂谈 26篇
  • Linux 5篇
  • git 4篇
  • IDEA 4篇
  • mac 5篇
  • java 10篇
  • 多线程 7篇
  • 前端 1篇
  • 项目 5篇
  • 虚拟机 7篇
  • MySQL 3篇
  • 云开发项目 7篇
  • 中间件 6篇
  • JavaFX 1篇
  • Tomcat 2篇
  • Maven 5篇
  • 数据库 7篇
  • JavaWeb 3篇
  • 深度学习 1篇
  • 作业练习题 4篇
  • rose 1篇
  • Navicat 1篇
  • 排序算法 1篇
  • 练习题 17篇

最新评论

  • Gateway网关报错Unable to start ServletWebServerApplicationContext due to missing ServletWebServer

    kkoneone11: 感谢补充

  • Gateway网关报错Unable to start ServletWebServerApplicationContext due to missing ServletWebServer

    Gli Zark: 还有可能是与你引入的新依赖冲突了,尝试在gateway模块exclusion排除掉去,像我就是在common模块引入了debezium-embedded依赖,但是gateway模块又依赖common模块,所以在引入common依赖的地方排除掉debezium-embedded即可正常启动

  • 保姆级最详细方案Mac解决command not found:mvn

    普通网友: 干货满满,实用性强,博主的写作风格简洁明了,让人一目了然。文章涵盖了很多实用的知识点。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • Tomcat+IDEA+Servlet能显示页面但提交form表单出现404问题

    往生97: 小黑子

  • 最全解决:微服务之间调用出现Load balancer does not have available server for client

    yangchen23456: media-api注册不上咋办表情包

最新文章

  • Go中gin框架的*gin.Context参数常见实用方法
  • Mac error:0308010C:digital envelope routines::unsupported
  • Mac vscode could not import github.com/gin-gonic/gin
2024年13篇
2023年88篇
2022年23篇
2021年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkoneone11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家中式玻璃钢雕塑加工厂延庆玻璃钢人物雕塑出售鄂尔多斯玻璃钢雕塑公司甘肃玻璃钢人物雕塑设计肇庆广场玻璃钢动物雕塑玻璃钢雕塑工艺多少钱甘肃玻璃钢雕塑定制厂家个性化玻璃钢雕塑定制杭州玻璃钢雕塑制作沈阳创意玻璃钢雕塑玻璃钢艺术雕塑艺术小品玻璃钢抽象雕塑新乡玻璃钢花瓶花盆玻璃钢孔子雕塑品牌定西大型玻璃钢雕塑定制定西卡通玻璃钢雕塑哪家好广东特色商场美陈多少钱宁夏玻璃钢卡通雕塑定制玻璃钢手袋雕塑大型的玻璃钢仿铜雕塑蒙城商场亮化美陈肇庆玻璃钢雕塑摆件池州公园玻璃钢雕塑定制昆明定做玻璃钢造型雕塑永年玻璃钢花盆贵州特色玻璃钢雕塑白城园林景观玻璃钢雕塑价格湖北环保玻璃钢雕塑图片玻璃钢浮雕雕塑哪家好玉溪玻璃钢雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化