select * from emp; --emp全表
select * from dept; --dept全表
--查询emp表中,工资是800,950,1300或者3000的员工信息
select * from emp where sal in(800,950,1300,3000); --
转换为exists:
select * from emp e --emp表简称为e
where exists ( --替换in,对后面的子查询进行判断是否成立
select * from (
select min ( sal ) m from emp group by deptno --查询emp表中各部门的最低工资,并简称为m
--(除聚合函数和分组的列名之外,select后的列名必须写在group by后面)
) e2 --e2为select * from (select min ( sal ) m from emp group by deptno)括号内表的简称
where e2.m = e.sal ); --约束e2中的m列与表中的sal列相等
exists相当于java中的布尔类型,若exists后面的程序成立则运行前面的程序,若不成立则不运行,起判断作用。
因为m列与sal列同在同一程序中,所以可以直接写等于;若不是同一程序,等于的结果则以笛卡尔积的方式呈现。