MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在web应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。

  mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当的麻烦。以下是mysql子查询的几种常见写法:

  1.select*fromxxxwherecol=[any|all](select*fromxxxx);

  该句法可分为加关键词和不加关键词的写法,

  当不加关键词的时候,

  子查询语句返回的是一个离散值

  (注意是一个),查询语句将以子查询语句的结果作为自己where子句的条件进行查询,该句法可以在子查询语前加入any、all、exists等关键字,此时子查询语句返回的是一组离散值。any则表示,查询

  语句是以子查询返回的值作为一个范围,在此值范围内进行查询,其与in关键字相像;all关键不太好了解,表示起全部匹配啥的。

  2.select*fromxxxwherecolin(select*fromxxxx);

  该句法相当的明了,就是查询语句的where子句是以子查询语句的结果作为其范围的,与上一种语法的any相似。

  3.selectrow(value1,value2.....)=[any](selectcol1,col2..);

  该语句的执行实质是:

  子查询语句的执行所得的结果与查询的结果集匹配,

  若能找到匹配的返回真,否则返回假,并且两边的结果集都是一组离散值。

  4.select....wherecol=[not]exists(select......);

  该语句比较蹩脚,其执行是这样的:当子查询进行操作,有返回结果的时候,该语句才会执行,

  而且有多少个结果,语句就执行几次。

  5.select....from(select.....)asnamewhere......

  该句法,在平时用的比较少,而且并不好理解。其实是这么一回事,通过子查询执行的结果来构

  造一张新的表(这个表是一张衍生数据表,是一张虚拟的表),其用来作为主句的查询的对象,

  该句法功能非常强大,在一些复杂的查询中会经常用到。

  小编结语:

  子查询虽然挺方便,但其有不少缺点,其不支持limit,而且经实验证明其执行效率相当不理想,在一般的情况下,还是不推荐是用子查询。

MySQL子查询有哪五种形式?的更多相关文章

  1. Mysql子查询、关联查询

    mysql中update.delete.install尽量不要使用子查询 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组).orde ...

  2. MySQL 子查询(一)

    源自MySQL 5.7 官方手册 13.2.10 Subquery Syntax 〇.MySQL子查询介绍 子查询指的是嵌套在某个语句中的SELECT语句. MySQL支持标准SQL所要求的所有子查询 ...

  3. 第09章 MySQL子查询

    第09章 MySQL子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入. SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要 ...

  4. [慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时

    案例梳理时间:2013-9-25 写在前面的话: 在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助, ...

  5. Mysql子查询IN中使用LIMIT

    学习下Mysql子查询IN中使用LIMIT的方法. 这两天项目里出了一个问题,mysql LIMIT使用后报错. 需求是这样的,我有3张表,infor信息表,mconfig物料配置表,maaply物料 ...

  6. MySQL 子查询 EXISTS 和 NOT EXISTS(转)

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

  7. mysql子查询慢的问题

      当你在用explain工具查看sql语句的运行计划时.若select_type 字段中出现"DEPENDENT SUBQUERY"时,你要注意了.你已经掉入了mysql子查询慢 ...

  8. MySQL子查询,派生表和通用表达式

    一:子查询 1.介绍 在另一个查询(外部查询)中嵌套另一个查询语句(内部查询),并使用内部查询的结果值作为外部查询条件. 2.子查询在where中 SELECT customerNumber, che ...

  9. MySQL子查询慢现象的解决

    当你在用explain工具查看sql语句的执行计划时,若select_type 字段中出现“DEPENDENT SUBQUERY”时,你要注意了,你已经掉入了mysql子查询慢的“坑". 相 ...

随机推荐

  1. Django2.0以上版本的URL的正则匹配问题

    正则表达式形式的URL匹配问题: 1.导入re_path from django.urls import path,re_path 2.进行正则匹配 re_path('detail-(\d+).htm ...

  2. js 弹性菜单

    <!doctype html> <html> <head> <meta http-equiv="Content-Type" content ...

  3. Kibana问题搜集---下载源码,执行npm install 报错

    npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! chromedriver@2.34.0 install: `node install.js`npm E ...

  4. 项目中遇到的问题:前台 disabled 与 后台disabled

    TPRI项目流程,点[保存],“人员”服务器端控件,如果在前台disabled设置,则值会丢失:在后台设置disabled就可以.

  5. dedecms 的采集

    http://www.360doc.com/content/14/0521/09/13870710_379547377.shtml http://www.360doc.com/content/14/0 ...

  6. day 012 生成器 与 列表推导式

    生成器的本质就是迭代器,写法和迭代器不一样,用法一样. 获取方法: 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 例如: 更改return 为 yield 即 ...

  7. mysql 死锁解决办法

    查询表的时候,发现一圈圈转啊转,就是不出来数据,猜测表被锁住 解决办法 : mysql> show processlist ; mysql> kill 4;       说明 : 4为 i ...

  8. nodejs的异步非阻塞IO

    简单表述一下:发启向系统IO操作请求,系统使用线程池IO操作,执行完放到事件队列里,node主线程轮询事件队列,读取结果与调用回调.所以说node并非真的单线程,还是使用了线程池的多线程. 上个图看看 ...

  9. 性能测试工具LoadRunner25-LR之常用性能指标计算公式

    1.吞吐量计算公式 定义:指单位时间内系统处理用户的请求数 从业务角度看,吞吐量可以用:请求数/秒.页面数/秒.人数/天或处理业务数/小时等单位来衡量. 从网络角度看,吞吐量可以用:字节/秒来衡量 对 ...

  10. Murano Weekly Meeting 2016.08.09

    Meeting time: 2016.August.09 1:00~2:00 Chairperson:  Kirill Zaitsev, from Mirantis Meeting summary: ...