Sintaxis
SELECT...FROM...WHERE EXISTS(Subconsulta)Ejemplo
Considere la siguiente tabla llamada CLIENTE:
Digamos que estamos interesados en consultar todos los datos de nuestros clientes, pero solo si ya hay clientes que tienen mas de 30 años. Para ello usaremos el operador EXISTS de la siguiente manera:
SELECT * FROM CLIENTEWHERE EXISTS(SELECT EDAD FROM CLIENTE WHEREEDAD>30)
El resultado sería:
Debido a que hay varios clientes que ya tienen mas de 30 años, el operador EXISTS ha devuelto un valor verdadero en la clausula WHERE, lo que da luz verde a nuestra consulta externa para que se ejecute.
Y cuando EXISTS devuelve el valor de falso?
Simplemente no se ejecuta la consulta externa. Supongamos que deseamos consultar el código de todos los clientes de la tabla, pero solo si hay clientes con prioridad MEDIA('M'). Observa:
SELECT IDFROM CLIENTEWHERE EXISTS(SELECT EDAD FROM CLIENTE
WHERE PRIORIDAD='M')
El resultado sería:
Ninguna fila ha sido retornada, ya que si te fijas bien la tabla CLIENTE no tiene ningún registro con PRIORIDAD MEDIA.
Dicen que el operador NOT puede combinarse con EXISTS, es verdad?
Claro!
El operador NOT permite negar la intención de EXISTS, es decir, devolverá un valor verdadero si no se ha encontrado ninguna fila en la subconsulta.
Podemos reescribir el anterior ejemplo usando el operador NOT para consultar el código de todos los clientes si NO EXISTE nadie que tenga prioridad MEDIA.
SELECT IDFROM CLIENTEWHERE NOT EXISTS(SELECT EDAD FROM CLIENTE
WHERE PRIORIDAD='M')
El resultado sería:
James Revelo Urrea - Desarrollador independiente