10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 36.4 mb
PDF (A4)- 36.4 mb
PDF (RPM)- 35.7 mb
HTML下载(TGZ)- 9.5 mb
HTML下载(Zip)- 9.5 mb
HTML下载(RPM)- 8.2 mb
手册页(TGZ)- 235.5 kb
手册页(Zip)- 347.0 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

13.2.10子查询

子查询是选择语句在另一个语句中。

支持SQL标准要求的所有子查询表单和操作,以及一些特定于mysql的特性。

下面是子查询的例子:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

在这个例子中,SELECT * FROM t1…外查询(或外声明),(SELECT column n1 FROM t2)子查询.我们说子查询是嵌套的在外部查询中(实际上可以在其他子查询中嵌套子查询),嵌套的深度相当大。子查询必须始终出现在圆括号内。

子查询的主要优点是:

  • 它们允许查询结构化这样就可以将语句的每一部分分离出来。

  • 它们提供了执行操作的替代方法,否则这些操作将需要复杂的连接和联合。

  • 许多人发现子查询比复杂的连接或联合更具可读性。实际上,正是子查询的创新给了人们调用早期SQL的最初想法结构化查询语言。

下面是一个示例语句,它展示了SQL标准指定的和MySQL支持的子查询语法的要点:

DELETE FROM t1 WHERE s11 > ANY (SELECT COUNT(*) /* no hint */ FROM t2 WHERE NOT EXISTS (SELECT * FROM t3 WHERE ROW(5*t2.s1,77)= (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM (SELECT * FROM t5) AS t5)));

子查询可以返回一个标量(单个值)、一个行、一个列或一个表(一个或多个列的一个或多个行)。这些子查询称为标量、列、行和表子查询。返回特定类型结果的子查询通常只能在某些上下文中使用,如下几节所述。

对于可以使用子查询的语句类型几乎没有限制。子查询可以包含许多普通查询所不能包含的关键字或子句选择可以包含:截然不同的集团命令限制,连接,索引提示,联盟结构、注释、函数等等。

子查询的外部语句可以是以下任意一个:选择插入更新删除,或

在MySQL中,不能在子查询中修改一个表并从同一个表中进行选择。这适用于诸如删除插入取代更新,和(因为子查询可以在条款)加载数据

有关优化器如何处理子查询的信息,请参见第8.2.2节,“优化子查询、派生表和视图引用”.有关子查询使用限制的讨论,包括某些形式的子查询语法的性能问题,请参见第13.2.10.12节“子查询的限制”