SQL QUERY ON EXISTS CLAUSE

时间:2017-08-16 06:23:31

标签: mysql sql sql-server

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

1 个答案:

答案 0 :(得分:2)

第二个查询返回instructor表中的所有记录,因为department表中有DEPT_BUILDING='JOHNS'个记录。因此exists()对每条记录都返回true。

第一个查询仅返回instructor表中的最后2个记录,因为exists()也测试部门ID中的匹配,而部门4没有名为johns的部门。