09/07/2009, 11:03
|
| | | Fecha de Ingreso: junio-2008 Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 16 años, 7 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 |