2016-04-26 5 views
-2

In der Tabelle nor_employees, wenn ich die folgende Abfrage ausführen, keine Zeilen ausgewählt sind.in SQL, wie die dbms die Abfrage ausführen

SELECT lastname, firstname, employee_id 
FROM nor_employees 
WHERE employee_id NOT IN 
(SELECT reports_to FROM NOR_EMPLOYEES); 

für die folgende Abfrage wird es bekommen.

SELECT lastname, firstname, employee_id 
FROM nor_employees 
WHERE employee_id NOT IN 
(SELECT reports_to FROM NOR_EMPLOYEES where reports_to is not null); 

Können Sie erklären warum?

+0

Es liegt daran, dass Sie verschiedene 'WHERE' Klauseln haben ... alles was wir sagen können ... – fancyPants

Antwort

0

Es gibt eine 3-Wert-Logik.

NOT IN-Klausel ist nicht gleich übersetzt, das heißt

select * 
from table 
where col not in (10,20) 

es durch Dolmetscher

select * 
from table 
where col <> 10 and col <> 20 

Bei übersetzt wird, wenn einer der Werte in der Liste null, dann haben wir col <> Null. Es ist immer falsch. Als Ergebnis keine Zeilen im Ergebnissatz

Verwandte Themen