Ver Mensaje Individual
  #8 (permalink)  
Antiguo 09/07/2009, 11:03
Avatar de Dradi7
Dradi7
 
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 11 meses
Puntos: 220
Respuesta: problemas con datos devueltos por el cursor

Primero supongamos siempre que in debe ser usado para un conjunto de datos pequeños o un subquery pequeño

ejm:

Select t1.* from t1 where t1.campo in ('a','b','c') -- esto es correcto

Select t1.* from t1 where t1.campo in (select campo from t2) -- esto es correcto

Select t1.* from t1 where t1.campo not in (select campo from t2) -- esto tambien es correcto pero si existe un valor nulo en el campo de la tabla 2 entonces la consulta no te va a devolver ningun dato ya que toma el nulo como un campo que no esta incluido en la tabla o no existe

Ahora con Exists

Select t1.* from t1 where exists(select campo from t2) -- esto es correcto y mas rapido si supongamos la tabla 2 tenga una cantidad de datos inmensa

Select t1.* from t1 where not exists (select campo from t2) -- esto es correcto y en caso que haiga un valor nulo no lo toma en cuenta y sigue verificando algo que el in no lo hace

Tener cuidado siempre al utilizar el in no digo que necesariamente debes usar exists pero siempre saber en donde y cuando es accedible utilizar in o exists
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones