我的理解是,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