Revista Informática

Exists

Publicado el 06 junio 2014 por Jamesrevelo @herprogramacion
El operador lógico EXISTS de SQL comprueba que una subconsulta retorne al menos en una fila. Si es así, la condición será verdadera y se ejecutará la consulta externa. Si no, la consulta no se llevará a cabo.
SQL EXISTS

Sintaxis

SELECT...FROM...WHERE EXISTS(Subconsulta)
Ejemplo
Considere la siguiente tabla llamada CLIENTE:
Tabla 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:
EXISTS
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:
EXISTS resultado
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:
EXISTS ejemplo 3
James Revelo Urrea - Desarrollador independiente

Volver a la Portada de Logo Paperblog