你的意思是指查询比部门30中最高的工资的还高的员工吧。
select ename,deptno,sal
from emp
where sal> (
select max(sal)
from emp
where deptno=30);
要用max(sal)。
(select sal from emp where deptno=30)
这个会有多条记录,所以错的的,楼上的是正确的
select ename,sal,deptno from emp where sal>all(select sal from emp where deptno=30);
或者
select ename,sal,deptno from emp where sal>(select max(sal) from emp where deptno=30);
如果你要查询任意一个
select ename,sal,deptno from emp where sal>any(select sal from emp where deptno=30);
或者
select ename,sal deptno from emp where sal>(select min(sal) from emp where deptno=30);
select * from emp a where not exists (select * from emp b where b.deptno=30 and a.sal<=b.sal) ;
你写的那个肯定错了,因为单值比较操作符不能处理多行值