MySQL子查询的几种常见形式介绍

 更新时间:2014年04月14日 11:46:01   作者:  
mysql从4.1版开始支持子查询功能,在此版本前,可以用join写连表查询来进行替代,但不推荐这么写,相当的麻烦

mysql子查询的几种常见写法:

复制代码 代码如下:

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

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

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

该 句法相当的明了,就是查询语句的where子句是以子查询语句的结果作为其范围的,与上一种语法的any相似;
复制代码 代码如下:

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

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

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

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

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

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

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

相关文章

  • MySQL update set 和 and的区别

    MySQL update set 和 and的区别

    这篇文章主要介绍了MySQL update set 和 and的区别,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • MySQL 性能优化的最佳20多条经验分享

    MySQL 性能优化的最佳20多条经验分享

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。
    2010-07-07
  • MySQL 事务概念与用法深入详解

    MySQL 事务概念与用法深入详解

    这篇文章主要介绍了MySQL 事务概念与用法,结合实例形式深入分析了MySQL 事务基本概念、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • MySQL实现MYISAM表批量压缩的方法

    MySQL实现MYISAM表批量压缩的方法

    这篇文章主要介绍了MySQL实现MYISAM表批量压缩的方法,实例分析了MySQL使用shell命令批量压缩MYISAM表的相关技巧,需要的朋友可以参考下
    2016-04-04
  • C++连接使用MySQL的方法

    C++连接使用MySQL的方法

    这篇文章主要为大家详细介绍了C++连接使用MySQL的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • mysql 5.7安装 MySQL 服务无法启动但是服务没有报告任何错误

    mysql 5.7安装 MySQL 服务无法启动但是服务没有报告任何错误

    这篇文章主要介绍了mysql 5.7安装 MySQL 服务无法启动但是服务没有报告任何错误的相关资料,需要的朋友可以参考下
    2017-04-04
  • MySQL字符之char、varchar类型简析

    MySQL字符之char、varchar类型简析

    varchar和char是MySQL中的两种数据类型,都是用来存储字符串的,下面这篇文章主要给大家介绍了关于MySQL字符之char、varchar类型的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Ubuntu下完美实现迁移MySQL数据库位置

    Ubuntu下完美实现迁移MySQL数据库位置

    这篇文章主要介绍了Ubuntu下完美实现迁移MySQL数据库位置,十分详细,有需要的小伙伴可以参考下
    2015-03-03
  • mysql5.5.28安装教程 超详细!

    mysql5.5.28安装教程 超详细!

    这篇文章主要为大家详细介绍了mysql5.5.28安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • MySQL中删除重复数据的简单方法

    MySQL中删除重复数据的简单方法

    这篇文章主要介绍了MySQL中删除重复数据的简单方法,比起一般的NOT IN语句的效率更为高,需要的朋友可以参考下
    2015-05-05

最新评论