原因是:第一个查询里的第一个EMP使用了别名X,所以在最后一行的“WHERE 部门号=X.所在部门”,这里的X就把第一个EMP表和DEPT表相关联,所以在“
SELECT 工资
FROM EMP
WHERE 职工号 IN...”这个查询里反回的只有一行数据。
第二个查询,因为没用使用别名,所以,DEPT会和最近的EMP表相关联,其结果就是使得
“SELECT 工资
FROM EMP
WHERE 职工号 IN...”这个查询,反回多行,所以就会报错了。
如果把第二个查询改成这样
SELECT 姓名, 工资
FROM EMP
WHERE 工资 > ( SELECT TOP 1 工资
FROM EMP
WHERE 职工号 IN
( SELECT 部门经理的职工号
FROM DEPT
WHERE 部门号=EMP.所在部门 )就不会报错了,当然结果也是不正确的。