Frage

Ich versuche etwas zu tun, was ich getan habe, eine million mal und es funktioniert nicht, kann mir jemand sagen warum?

Ich habe eine Tabelle, die für Menschen, die gesendet wird fortgesetzt, und es hat Ihre E-Mail Adresse in es...

Ich möchte herausfinden, ob einer dieser Leute haben sich NICHT angemeldet auf der Website.Die aspnet_Membership Tabelle hat alle Menschen, die sich angemeldet haben auf der Webseite.

Es gibt 9472 Arbeitssuchende, mit der einzigartigen E-Mail-Adressen.

Diese Abfrage erzeugt 1793 Ergebnisse:

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

Dies deutet darauf hin, dass es 7679 (9472-1793) E-Mails von Menschen, die nicht angemeldet sind auf der web site.Seit 1793 von Ihnen HABEN übereinstimmt, würde ich erwarten, dass der rest NICHT passt...aber wenn ich die Abfrage für, dass, ich bekomme nichts!

Warum ist diese Abfrage gibt mir nichts???

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

Ich weiß nicht, wie das sein könnte nicht funktioniert, im Grunde sagt "zeige mir alle E-Mails, die IN der Arbeitsuchende in der Tabelle, aber NICHT IN der aspnet_Membership Tabelle...

War es hilfreich?

Lösung

Wir hatten ein sehr ähnliches Problem vor kurzem, dass die Unter manchmal Nullwert Rückkehr wurde. Dann behandelt die in Anweisung null in einer seltsamen Art und Weise, ich denke, den Wert immer passend, so dass, wenn Sie Ihre Abfrage ändern:

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

kann es funktionieren ....

Andere Tipps

Sie können dort viele Duplikate haben. Ich sehe nicht die Abfrage Fehler aus der Spitze von meinem Kopf, aber Sie könnten versuchen, es auf diese Weise zu schreiben:

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

Sie können auch eine GROUP BY oder DISTINCT in dort werfen Duplikate zu entfernen.

Sie exists statt in wie diese verwenden:

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

Sie sollten eine bessere Leistung und die ‚seltsame‘ Verhalten vermeiden (was ich vermute, ist mit Nullwerten / Ergebnisse zu tun), wenn in verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top