Você está na página 1de 2

hermosaprogramacion.

com

http://www.hermosaprogramacion.com/2014/05/sql-subconsultas-select/

Subconsultas en la sentencia SELECT


James
Revelo

Usar subconsultas dentro de un sentencia SELECT en SQL permite seleccionar resultados orientados con
respecto a una o varias filas en la clausula WHERE.

Sintaxis
SELECT columna1,
FROM tabla1,
WHERE columna1 OPERADOR
(SELECT columna1,
FROM tabla1,
[WHERE])

Ejemplo 1, Subconsulta de una columna que retorna una sola fila

La subconsulta mas bsica y sencilla es aquella que devuelve un solo resultado o fila, por lo que puede compararse
con un operador binario( < , > , = , != , etc). Para este y los otros ejemplos usaremos la siguiente tabla llamada
CLIENTE:

Tabla CLIENTE

Obtenga el nombre, apellido y telfono de los clientes que tengan la mayor edad :

SELECT NOMBRE, APELLIDO, TELEFONO


FROM CLIENTE
WHERE EDAD=(SELECT MAX(EDAD) FROM CLIENTE);

En esta subconsulta usamos el operador de igualdad, para declarar que


necesitamos los registros que tengan el valor maximo de edades dentro de la
tabla.

Ejemplo 2, Subconsulta de una columna que retorna mltiples filas


Como indica su nombre, la subconsulta retornar varias filas, por ende ya no podemos usar operadores binarios
para la condicin del WHERE. Debemos usar operadores para mltiples resultados como ALL, IN, ANY , etc.
Obtengan los clientes que tengan distinta edad de aquellos clientes que tienen un cdigo mayor a 5 :
SELECT ID,NOMBRE, APELLIDO, TELEFONO
FROM CLIENTE
WHERE EDAD<>ALL(SELECT EDAD FROM CLIENTE WHERE ID>5);
Para este ejemplo usamos el operador ALL en el WHERE.
Bsicamente lo que hicimos fue cotejar los primero 5 registros con los
ltimos 5, comparando las edades para encontrar solo los clientes que
tuvieran edades nicas.

Ejemplo 3, mltiples subconsultas

Resultado de la consulta

Al igual que las expresiones simples en un WHERE podemos usar el operador AND para reunir varias subconsultas
al mismo tiempo.

Seleccione los clientes cuya edad est entre el mnimo y el promedio de las edades (MIN,AVG) :
SELECT ID,NOMBRE, APELLIDO, EDAD
FROM CLIENTE
WHERE
EDAD> (SELECT MIN(EDAD) FROM CLIENTE)
AND EDAD< (SELECT AVG(EDAD) FROM CLIENTE);

Resultados de la consulta

Você também pode gostar