我碰到下面的SQL問題,他們的著名HR
架構與部門名稱的位置以及位置所附帶的Oracle:SQL查詢找到沒有部門
寫SQL查詢來發現所有的位置和每個地點的部門以及沒有部門的地點。不要使用OUTER JOIN。
隨着OUTER JOIN
很容易:
SELECT department_name, city
FROM locations
LEFT OUTER JOIN departments USING (location_id);
我得到43個結果。我試着用這樣的:
SELECT department_name, city
FROM locations l, departments d
WHERE l.location_id = d.location_id OR
l.location_id NOT IN (SELECT DISTINCT location_id FROM departments);
,但我得到的只有27行,就好像我做的:
SELECT department_name, city
FROM locations
JOIN departments USING (location_id);
爲什麼OR
不行?謝謝!
編輯:
正如@mathguy指出的那樣,我在departments
表中的列location_id
曾與NULL
部門。這就是爲什麼NOT IN
不返回任何行。否則,我會有更多的行查找departments
表中的位置標識。
可能是壞的查詢是第一個,而不是第二..左外連接應該使用ON,而不是使用 – Massimo
@Massimo,爲什麼?它確實產生了期望的結果。 –
http://docs.oracle.com/database/121/SQLRF/statements_10002.htm#i2107296 – Massimo