1)查询:
SELECT INS_NAME
FROM INSTRUCTOR
WHERE EXISTS(SELECT DEPT_NAME
FROM DEPARTMENT
WHERE DEPT_ID = INSTRUCTOR.DEPT_ID AND DEPT_BUILDING = 'JOHNS');
2)查询:
SELECT INS_NAME
FROM INSTRUCTOR
WHERE EXISTS(SELECT DEPT_NAME
FROM DEPARTMENT
WHERE DEPT_BUILDING = 'JOHNS');
代码1和2产生不同的输出请帮助我理解原因。
(INSTRUCTOR TABLE)
ins_id ins_name dept_id ins_sal tax
27 DHIRAJ 4 200
28 RAHUL 4 500
34 HIO 4 100 2
90 SURYA 5 120 30
33 VINNY 6 100 11
(部门表)
DEPT_BUILDING DEPT_NAME DEPT_ID
THOMAS BIO 4
JOHNS CHEM 5
JOHNS CSE 6
答案 0 :(得分:2)
第二个查询返回instructor
表中的所有记录,因为department
表中有DEPT_BUILDING='JOHNS'
个记录。因此exists()
对每条记录都返回true。
第一个查询仅返回instructor
表中的最后2个记录,因为exists()
也测试部门ID中的匹配,而部门4没有名为johns的部门。