Wir versuchen, Datensätze auszusortieren, die ein Duplikat bestimmter Spalten enthalten. Ich habe diese Abfrage so erstellt, dass jede Zeile mit einem 'N' für ihr Flag angezeigt wird, wenn in der Tabelle kein passender 'Y'-Eintrag mit demselben Nachnamen/Nachnamen vorhanden ist.Warum haben diese zwei "nicht in" -Abfragen unterschiedliche Ergebnisse?
select * from Table where LName+FName not in
(select LName+FName from Table where FLAG = 'y')
Dies kommt jedoch mit 0 Ergebnissen zurück. Die innere Abfrage gibt erwartete Ergebnisse zurück. Wenn ich die innere Abfrage ausführe und die Ergebniswerte wie unten manuell einfüge, wird sie mit Ergebnissen ausgeführt.
select * from Table where LName+Fname not in ('DoeJohn','AbelAdam')
Was genau geht hier vor?
können Sie versuchen, Tabellen-Aliases Hinzufügen und sehen, ob das Problem weiterhin besteht, zum Beispiel 'a select * from Table a wo a.LName + a.FName nicht. in (wählen Sie b.LName + b.FName aus Tabelle b, wobei b.FLAG = 'y') '? – a1ex07
Keine Änderung im Verhalten bei beiden Alias-Tabellen. – user9114357
Irgendwelche 'null' Namen in jedem Teil der Abfrage? Denn 'not in (list, including, null)' gibt immer unbestimmt zurück (und Sie sollten für verkettete 'null's 'null' liefern). Die Moral ist: Sie sollten eine Stichprobe von Daten zeigen, die das Problem aufweisen. –