Mysql子查询导致"where"子句

Edd*_*die 25 mysql

有可能像这样执行mysql查询吗?

select (select A from B where ... ) as C from D where C like ' ... '
Run Code Online (Sandbox Code Playgroud)

我需要在一般的"where"子句中使用子查询的结果.

a'r*_*a'r 28

您可以将其包装在如下的子查询中:

SELECT * 
FROM (
        select (select A from B where ... ) as C from D
     ) subq
WHERE 
    C like ' ... '
Run Code Online (Sandbox Code Playgroud)


Der*_*rts 11

你读过这个吗?

http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

子查询是另一个语句中的SELECT语句.

从MySQL 4.1开始,支持SQL标准所需的所有子查询表单和操作,以及一些特定于MySQL的功能.

以下是子查询的示例:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 
Run Code Online (Sandbox Code Playgroud)

在此示例中,SELECT*FROM t1 ...是外部查询(或外部语句),而(SELECT column1 FROM t2)是子查询.我们说子查询嵌套在外部查询中,实际上可以将子查询嵌套在其他子查询中,达到相当深的程度.子查询必须始终出现在括号内.

子查询的主要优点是:

它们允许结构化的查询,以便可以隔离语句的每个部分.

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

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

下面是一个示例语句,显示了SQL标准指定并在MySQL中支持的子查询语法的主要观点: