视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MYSQL子查询的五种形式
2020-11-09 07:51:28 责编:小采
文档

mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当的麻烦。mysql子查询的几种常见写法: select * from xxx where col=[ any | all ]( select * from xxxx); 该句法可分为加关键词和不加关键词的写法,当

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

  1. select * from xxx where col = [any|all](select * from xxxx);

该句法可分为加关键词和不加关键词的写法,当不加关键词的时候,子查询语句返回的是一个离散值(注意是一个),查询语句将以子查询语句的结果作为自己 where子句的条件进行查询,该句法可以在子查询语句前加入any、all、some等关键字,此时子查询语句返回的是一组离散值。any则表示,查询语句是以子查询返回的值作为一个范围,在此值范围内进行查询,其与in关键字相像;all关键不太好了解,表示起全部匹配啥的。

  1. select * from xxx where col in (select * from xxxx);

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

  1. select row(value1,value2.....) = [any](selectcol1,col2..);

该语句的执行实质是:子查询语句的执行所得的结果与查询的结果集匹配,若能找到匹配的返回真,否则返回假,并且两边的结果集都是一组离散值。

  1. select .... where col = [not] exists (select......);

该语句比较蹩脚,其执行是这样的:当子查询进行操作,有返回结果的时候,该语句才会执行,而且有多少个结果,语句就执行几次。

  1. select .... from (select .....) as name where ......

该句法,在平时用的比较少,而且并不好理解。其实是这么一回事,通过子查询执行的结果来构造一张新的表(这个表是一张衍生数据表,是一张虚拟的表),其用来作为主句的查询的对象,该句法功能非常强大,在一些复杂的查询中会经常用到。

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

下载本文
显示全文
专题