[+/-]
ANY, IN y
          SOMEALLEXISTS y NOT EXISTSFROM
        Una subconsulta es un comando SELECT dentro
        de otro comando.
      
MySQL 5.0 soporta todas las formas de subconsultas y operaciones que requiere el estándar SQL, así como algunas características específicas de MySQL.
Aquí hay un ejemplo de subconsulta:
SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
        En este ejemplo, SELECT * FROM t1 ... es la
        consulta externa (o comando
        externo), y (SELECT column1 FROM
        t2) es la subconsulta. Decimos
        que la subconsulta está anidada dentro de
        la consulta exterior, y de hecho, es posible anidar subconsultas
        dentro de otras subconsultas hasta una profundidad considerable.
        Una subconsulta debe siempre aparecer entre paréntesis.
      
Las principales ventajas de subconsultas son:
Permiten consultas estructuradas de forma que es posible aislar cada parte de un comando.
Proporcionan un modo alternativo de realizar operaciones que de otro modo necesitarían joins y uniones complejos.
Son, en la opinión de mucha gente, leíbles. De hecho, fue la innovación de las subconsultas lo que dio a la gente la idea original de llamar a SQL “Structured Query Language.”
Aquí hay un comando de ejemplo que muestra los puntos principales de la sintaxis de subconsultas como especifica el estándar SQL y soporta 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)));
Una subconsulta puede retornar un escalar (un valor único), un registro, una columna o una tabla (uno o más registros de una o más columnas). Éstas se llaman consultas de escalar, columna, registro y tabla. Las subconsultas que retornan una clase particular de resultado a menudo pueden usarse sólo en ciertos contextos, como se describe en las siguientes secciones.
        Hay pocas restricciones sobre los tipos de comandos en que
        pueden usarse las subconsultas. Una subconsulta puede contener
        cualquiera de las palabras claves o cláusulas que puede
        contener un SELECT ordinario:
        DISTINCT, GROUP BY,
        ORDER BY, LIMIT, joins,
        trucos de índices, constructores UNION ,
        comentarios, funciones, y así.
      
        Una restricción es que el comando exterior de una subconsulta
        debe ser: SELECT, INSERT,
        UPDATE, DELETE,
        SET, o DO. Otra
        restricción es que actualmente no puede modificar una tabla y
        seleccionar de la misma tabla en la subconsulta. Esto se aplica
        a comandos tales como DELETE,
        INSERT, REPLACE, y
        UPDATE. Una discusión más comprensible de
        las restricciones en las subconsultas se da en
        Apéndice H, Restricciones en características de MySQL.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

