我的理解是,IN就像是一個布爾函數,爲每個實例返回一個值,當使用IN時,外部查詢返回true。因此,結果集不應該只有外部查詢的行數?SQL的工作難點IN
表1:
DNUMBER DLOCATION
---------- ---------------
1 Houston
4 Stafford
5 Bellaire
5 Houston
5 Sugarland
表2:
DNAME DNUMBER
-------------------- ----------
Research 5
Administration 4
Headquarters 1
所以不應該這個查詢只能返回3行?
SELECT D.dname, DL.dlocation
FROM department D, dept_locations DL
WHERE D.dnumber IN
(SELECT dnumber FROM dept_locations)
結果:
DNAME DLOCATION
-------------------- -------------
Headquarters Houston
Administration Houston
Research Houston
Headquarters Stafford
Administration Stafford
Research Stafford
Headquarters Bellaire
Administration Bellaire
Research Bellaire
Headquarters Houston
Administration Houston
Research Houston
Headquarters Sugarland
Administration Sugarland
Research Sugarland
我n的工作方式類似於一系列排序,所以你基本上說「這個數組中存在D.數量(5,4,1)」 – Robert 2011-05-12 19:14:19