添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

1 子查询定义

在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。

2 子查询分类

2.1 按返回结果集分类

子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询。 表子查询: 返回的结果集是一个行的集合,N行N列(N>=1)。表子查询经常用于父查询的FROM子句中。 行子查询: 返回的结果集是一个列的集合,一行N列(N>=1)。行子查询可以用于福查询的FROM子句和WHERE子句中。 列子查询: 返回的结果集是一个行的集合,N行一列(N>=1)。

标量子查询 :返回的结果集是一个标量集合,一行一列,也就是一个标量值。可以指定一个标量表达式的任何地方,都可以用一个标量子查询。

从定义上讲,每个标量子查询也是一个行子查询和一个列子查询,反之则不是;每个行子查询和列子查询也是一个表子查询,反之也不是。

2.2 按照对返回结果的调用方法

子查询按对返回结果集的调用方法,可分为where型子查询,from型子查询及exists型子查询。 where型子查询: (把内层查询结果当作外层查询的比较条件)
定义:where型的子查询就是把内层查询的结果当作外层查询的条件。 from型子查询: (把内层的查询结果供外层再次查询)
定义:from子查询就是把子查询的结果(内存里的一张表)当作一张临时表,然后再对它进行处理。 exists型子查询: (把外层查询结果拿到内层,看内层的查询是否成立)
定义:exists子查询就是对外层表进行循环,再对内表进行内层查询。和in ()差不多,但是它们还是有区别的。主要是看两个张表大小差的程度。若子查询表大则用exists(内层索引),子查询表小则用in(外层索引);

3 使用子查询原则

1.一个子查询必须放在圆括号中。
2.将子查询放在比较条件的右边以增加可读性。
子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,并且如果指定了它就必须放在主 SELECT 语句的最后。
3.在子查询中可以使用两种比较条件:单行运算符(>, =, >=, <, <>, <=) 和多行运算符(IN, ANY, ALL)。

4 实例分析

4.1 创建测试表

CREATE TABLE PLAYERS
    (PLAYERNO      INTEGER      NOT NULL,
                    1 子查询定义    在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select)。子查询的结果传递给调用它的表表达式继续处理。2 子查询分类    2.1 按返回结果集分类        子查询按返回结果集的不同分为4种:表子查询,行子查询,列子查询和标量子查询。    
				
使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 如下面SQL语句: EXPLAIN select * from system_area where status = 1 获得下面的结果: select_type SIMPLE:简单表,不使用表连接或子查询 PRIMARY:主查询,即外层的查询 UNION:UNION中的第二个或者后面的查询语句 table 显示来自哪一张表 partitions 匹配的分区,如果查询是基于分区表的话,会显示查询将访问的分区 注意:在5.7以前的版本中,想要显示pa
1> 查询数据表除了前三条以外的数据。    起初我想到的是这条语句    SELECT * FROM admin WHERE userid NOT IN (SELECT userid FROM admin ORDER BY userid LIMIT 3) ORDER BY userid DESC    但是运行的时候会报 This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery 这个的意思是表示子查询的时候不支持limit ,还有一点我就是很二了 就是查询的时候用not in 效率非常不高
一,子选择基本用法 1,子选择的定义 子迭择允许把一个查询嵌套在另一个查询当中。比如说:一个考试记分项目把考试事件分为考试(T)和测验(Q)两种情形。下面这个查询就能只找出学生们的考试成绩 select * from score where event_id in (select event_id from event where type=’T’); 2,子选择的用法(3种)         用子选择来生成一个参考值 在这种情况下,用内层的查询语句来检索出一个数据值,然后把这个数据值用在外层查询语句的比较操作中。比如说,如果要查询表中学生们在某一天的测验成绩,就应该使用一个内层查询先找到这
子查询允许把一个查询嵌套在另一个查询当中。 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询。 子查询可以包含普通select可以包括的任何子句,比如:distinct、 group by、order by、limit、join和union等;但是对应的外部查询必须是以下语句之一:select、insert、update、delete、set或 者do。
一、子查询定义 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。 SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。 二、子查询的基本使用 1、子查询(内查询)在主查询之前一次执行完成。 2、子查询的结果被主查询(外查询)使用。 3、注意事项: (1)子查询要包含在括号内 (2)将子查询放在比较条件的右侧
文章目录MySQL——子查询用法1、子查询概述2、子查询的使用2.1、单行子查询2.2、多行子查询2.3、相关子查询子查询练习题 MySQL——子查询用法 1、子查询概述 子查询简介 子查询指一个查询语句嵌套在另一个查询语句内部的查询,内部的查询是外部查询的条件,这个特性从MySQL4.1开始引入。 SQL中子查询的使用大大增强了SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。
MySQL子查询语句是一种嵌套在主查询中的查询语句。它可以在主查询中使用子查询的结果进行进一步的过滤、计算或联接操作。 下面是一个示例,演示如何使用MySQL子查询语句: SELECT column1, column2, ... FROM table1 WHERE column1 = (SELECT column1 FROM table2 WHERE condition); 在这个示例中,主查询从 `table1` 表中选择特定的列,并使用子查询作为过滤条件。子查询通过选择满足特定条件的列来返回一个值,然后主查询使用该值来过滤结果。 还有其他类型的MySQL子查询语句,例如使用IN运算符的子查询、使用EXISTS运算符的子查询等。它们可以用于解决各种复杂的查询需求。 希望这个示例能够帮助你理解MySQL子查询语句!如果有更多问题,请随时提问。