exist的使用分析__mysql学习笔记
2017-09-16 18:00
204 查看
首先,我们要明白,就像
if(t==7)
cout<<"yes“;
一样,if后面的()里的句子,只表面是真是假,对输出什么东西没有任何影响
我们用select * / column1
from table1
where exists( select column2 from table2
where column3____)
的时候,那个()对于显示出来的字段数量没有任何影响!
然后,对于table1的每一条数据,都会挨个儿进行()里的判断,如果table2里有符合条件的数据,则真,没有则假;
所以其实column2 写什么都是无所谓的;
exists唯一做的就是根据真假来决定输不输出table1的数据;
这个说完了,我们再具体看看它到底干了些什么
exists对外表用loop逐条查询,每拿一条都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃;
not exists和exists整相反;
总的来说,如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件
in查询相当于多个or条件的叠加,符合一个就可以;
这么用
select * from user where user_id in (1,2,3);
user_id =1/2/3都可以;
1,2,3是用来举例子的,不代表任何字段;
not in 的话要求不等于1且不等于2且不等于3才可以;
in是先把子查询条件的记录全都查出来,就说有3个吧(1,2,3)。
然后把外表的user_id 一个个拉出来,
先让第一条id和1比,再和2比,再和3比,
然后拉出第二个;
还有,in查询的子条件返回结果只能有一个字段;
原文后面讲的exists和in的效率问题我真的没看懂呀
先记住下面这两条
子表小in ;
子表大exists;
无论大小,not exists;
if(t==7)
cout<<"yes“;
一样,if后面的()里的句子,只表面是真是假,对输出什么东西没有任何影响
我们用select * / column1
from table1
where exists( select column2 from table2
where column3____)
的时候,那个()对于显示出来的字段数量没有任何影响!
然后,对于table1的每一条数据,都会挨个儿进行()里的判断,如果table2里有符合条件的数据,则真,没有则假;
所以其实column2 写什么都是无所谓的;
exists唯一做的就是根据真假来决定输不输出table1的数据;
这个说完了,我们再具体看看它到底干了些什么
exists对外表用loop逐条查询,每拿一条都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃;
not exists和exists整相反;
总的来说,如果A表有n条记录,那么exists查询就是将这n条记录逐条取出,然后判断n遍exists条件
in查询相当于多个or条件的叠加,符合一个就可以;
这么用
select * from user where user_id in (1,2,3);
user_id =1/2/3都可以;
1,2,3是用来举例子的,不代表任何字段;
not in 的话要求不等于1且不等于2且不等于3才可以;
in是先把子查询条件的记录全都查出来,就说有3个吧(1,2,3)。
然后把外表的user_id 一个个拉出来,
先让第一条id和1比,再和2比,再和3比,
然后拉出第二个;
还有,in查询的子条件返回结果只能有一个字段;
原文后面讲的exists和in的效率问题我真的没看懂呀
先记住下面这两条
子表小in ;
子表大exists;
无论大小,not exists;
相关文章推荐
- Mycat学习笔记 番外篇一.客户端使用latin1字符集,后端MySQL为UTF8字符集,MyCat日志分析。
- Java学习笔记——MySQL的安装使用以及SQL语法简介
- mysql学习笔记(1):mysql命令行的使用
- Hadoop学习笔记(二)——zookeeper使用和分析
- Linux 学习笔记 -- 第四部分 Linux 使用着管理 -- 第19章 认识与分析日志文件
- Selenium学习笔记之004:使用Selenium IDE录制脚本并分析unittest框架
- 学习笔记 --- LINNUX 使用异步通讯机制实现按键驱动代码分析
- MySQL学习笔记(1):MySQL命令行的使用
- 深入分析JavaWeb Item26 -- MySQL 学习笔记
- MySQL学习笔记-Keepalived VIP配置使用
- python2学习笔记之mysql连接,中文乱码的解决和文件api的使用
- MYSQL学习笔记(5)配置:使用选项文件
- MySQL学习笔记之一:数据库基础理论及客户端工具的使用
- 关于Android最佳性能实践——分析内存的使用情况学习笔记
- MySQL学习笔记之十六 使用MySQL内建复制功能
- Mycat学习笔记 第一篇. MySql 读写分离与日志分析——主从单结点
- 在MySQL中使用SQL 【数据库高效编程 - 学习笔记 第四章】
- js面向对象的学习笔记九(BOM 与 DOM 经常使用的属性分析)
- mysql学习笔记(1):mysql命令行的使用
- PROCESS_YIELD()宏使用及过程分析<contiki学习笔记之八>