Domanda

Sto cercando di fare qualcosa che non ho fatto un milione di volte e non funziona, qualcuno può dirmi perché?

Ho una tabella per le persone che hanno inviato le riprende, e ha il proprio indirizzo email in...

Voglio scoprire se una qualsiasi di queste persone NON hanno firmato sul sito web.Aspnet_Membership tabella presenta tutte le persone che si SONO iscritti sul sito web.

Ci sono 9472 cercatori di lavoro, con unici indirizzi di posta elettronica.

Questa query produce 1793 risultati:

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

Questo suggerisce che ci deve essere 7679 (9472-1793) e-mail di persone che non è firmato sul sito web.Dal 1793 di partita, mi aspetto che il resto di loro NON corrispondono...ma quando faccio la query per ottenere il nulla!

Perché questa query mi dà niente????

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

Non so come possa essere, non di lavoro - dice sostanzialmente "visualizza tutti i messaggi di posta elettronica che sono il candidato del tavolo, ma NON IN aspnet_Membership tabella...

È stato utile?

Soluzione

Abbiamo avuto un problema simile di recente, dove la subquery ritornando a valori null a volte.Quindi, l'istruzione in considera nullo in un modo strano, penso sempre che corrisponde al valore, quindi se si modifica la query:

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

può funzionare....

Altri suggerimenti

Si potrebbe avere un sacco di duplicati là fuori.Non vedo l'errore di query al largo della parte superiore della mia testa, ma si potrebbe provare a scrivere in questo modo:

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

Si potrebbe anche gettare un GRUPPO o DISTINTI per sbarazzarsi di duplicati.

Si potrebbe utilizzare exists invece di in come questa:

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

Si dovrebbe ottenere prestazioni migliori ed evitare le 'strano' comportamento (ho il sospetto che è a che fare con i valori null/risultati) quando si utilizza in.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top