Pregunta

Estoy tratando de hacer algo que yo he hecho un millón de veces y no funciona, ¿alguien puede decirme por qué?

Tengo una tabla para que la gente que envió hojas de vida, y tiene su dirección de correo electrónico en...

Quiero averiguar si alguna de estas personas NO han firmado en el sitio web.El aspnet_Membership tabla tiene todas las personas que SE inscribieron en el sitio web.

Hay 9472 los buscadores de empleo, con la única direcciones de correo electrónico.

Esta consulta se produce 1793 resultados:

select j.email from jobseeker j
join aspnet_Membership m on j.email = m.email

Esto sugiere que debe haber 7679 (9472-1793) correos electrónicos de personas que no se inscribieron en el sitio web.Desde 1793 de ellos no coincidan, yo esperaría que el resto de ellos NO coinciden...pero cuando hago la consulta para que, me sale nada!

¿Por qué es esta consulta me da nada???

select j.email 
from jobseeker j
where j.email not in (select email from aspnet_Membership)

No sé cómo puede ser que no trabajo - básicamente dice "mostrar todos los correos electrónicos que se encuentran EN el demandante de empleo de la tabla, pero NO EN el aspnet_Membership mesa...

¿Fue útil?

Solución

Tuvimos un problema similar recientemente, donde la subconsulta estaba devolviendo valores null a veces.Luego, en la declaración de la trata null en una manera extraña, creo que siempre que coincida con el valor, así que si usted cambia su consulta a:

select j.email 
from jobseeker j
where j.email not in (select email from aspnet_Membership
                      where email is not null)

es posible que funcione....

Otros consejos

Usted podría tener una gran cantidad de duplicados por ahí.Yo no estoy viendo la consulta de error en la parte superior de mi cabeza, pero usted podría tratar de escribir de esta manera:

SELECT j.email
FROM jobseeker j
LEFT JOIN aspnet_Membership m ON m.email = j.email
WHERE m.email IS NULL

Usted podría también lanzar un GROUP BY o DISTINCT para deshacerse de los duplicados.

Usted podría utilizar exists en lugar de in como este:

Select J.Email
From Jobseeker j
Where not exists (Select * From aspnetMembership a where j.email = a.email)

Usted debe obtener un mejor rendimiento y evitar el 'extraño' comportamiento (que sospecho que tiene que ver con valores null/resultados) cuando se utiliza in.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top