Índice

Utilizar subconsultas

1. Introducción

Desde la versión 4.1, MySQL admite la utilización de subconsultas.

Una subconsulta es una consulta SELECT utilizada en el interior de otra consulta.

Una subconsulta puede utilizarse:

  • en la cláusula WHERE de una consulta SELECT, UPDATE o DELETE;

  • en la cláusula SELECT de una consulta SELECT;

  • en la cláusula FROM de una consulta FROM;

  • como valor asignado a una columna en una consulta INSERT o UPDATE;

  • como origen de datos de una consulta INSERT, en lugar de la cláusula VALUES.

La subconsulta siempre se escribe entre paréntesis.

Puede incluir, sin embargo, combinaciones, así como cláusulas WHERE, GROUP BY, ORDER BY, etc. Una subconsulta también puede anidar a su vez subconsultas.

2. Subconsulta escalar

Una subconsulta que devuelve una sola columna y, como mucho, una sola fila, se denomina subconsulta escalar.

Dicha subconsulta puede utilizarse en cualquier lugar donde se espere un valor (un operando):

  • en la cláusula WHERE de una consulta SELECT, INSERT, UPDATE o DELETE;

  • en la cláusula SELECT de una consulta SELECT;

  • como valor asignado a una columna en una consulta INSERT o UPDATE;

  • como operando de una función o de una expresión.

Ejemplo:

mysql> -- Diferencia entre el precio de la colección 1 y el precio medio 
mysql> -- de las colecciones. 
mysql> SELECT 
    ->   ROUND(precio_siniva - (SELECT AVG(precio_siniva) FROM coleccion),2) 
espacio 
    -> FROM 
    ->   coleccion 
    -> WHERE  ...