详述mysql的子查询及其常用使用方法
来源:互联网 发布:rcpp软件 编辑:程序博客网 时间:2024/06/05 18:07
在sql查询语句中子查询会被经常用到,所谓子查询就是在查询的时候where condition的condition是另一个select语句的结果,这个时候就需要使用子查询。
子查询关键词:in、not in、=、!=、exists、not exists等
in的使用:
not in的使用:
=的使用,=的使用要留意的是后面的select必须得出唯一的条件,也就是后面接的select语句必须只得到唯一的一条记录,否则会报错。
!=的使用方法:
exists的使用方法:
这里的exists的效果和in的效果一样,可以相互替代:
但要理解,in是外表和内表进行hash连接,而exists是外表与内表进行loop循环,两个基本上效率差不多,但是如果子表的表大那么最好用exists,子表表小最好用in。
in和exists的区别除了上面说的一个是hash连接,一个是loop循环外,exists判断的是子查询是否有返回,而in判断的是某值是否存在于集合里,语法上也不同,in后面接的查询语句结果必须是确定的一个字段(该字段会在in关键词前进行说明),否则会报错,而exists则没有要求,既可以是多个字段,也可以是*或者是一个字段皆可,因此exists关键词前不要特定写明某个字段,具体可以查看上图的两个语句之间的区别进行对比。
not exists的使用方法(和exists的使用方法一样,只是它进行loop循环查出的是子查询里不存在的记录):
0 0
- 详述mysql的子查询及其常用使用方法
- 详述mysql的聚合查询
- 详述mysql的表连接及其使用
- mysql 标量子查询,多表子查询,及其性能测评
- mysql的常用查询
- MySQL里面的子查询
- mysql子查询的弱点
- Mysql里的子查询
- MySQL子查询的优化
- MySQL数据库的子查询
- MySQL里面的子查询
- MySQL里面的子查询
- MySQL数据表的子查询
- MySQL的关联查询与子查询
- MySQL的子查询与连接查询
- MySQL的连接查询及子查询
- MySQL的联合查询和子查询
- mysql带有子查询的like查询
- struts2.5以上 报方法不允许错误
- property not initialized at super.init call
- anaconda安装opencv
- (排列生成算法)枚举排列的两种方法:递归枚举和next_permutation (使用多用next_permutation)
- as plugin GsonFormat
- 详述mysql的子查询及其常用使用方法
- 什么是多线程?线程的生命周期?
- 玲珑杯 1032 A-B
- 算法ti
- 英语歌曲开启九月之旅
- 操作系统--调度学习笔记(3)--单处理器调度
- 【Spring】--OpenSessionInViewFilter 的配置及作用
- CodeForces 625A Guest From the Past
- dNet项目数据访问层代码总结