31.多列子查询
多列子查询即是指查询返回多个列数据的子查询语句。
这句话听起来超级绕,我们上案例:
依旧是我们的老朋友,雇员表emp,现在需要我们显示出和allen这个员工部门和岗位完全相同的所有员工(除去allen这个员工)。
分析一下步骤,
1.首先我们需要知道allen的部门号和工作岗位
select deptno,job from emp where emp.ename = 'ALLEN';
2.根据上一步的查询结果做子查询
到现在我们会发现第一步的查询结果中返回的字段有两个,以前我们所学习的子查询(无论是单行还是多行)的返回结果里只有一个字段,但是我们又确实需要对这俩字段进行匹配。
故此,我们就需要多列子查询,其实只需要将字段对应好即可。
select ename from emp where (deptno,job) = (select deptno,job from emp where emp.ename = 'ALLEN') and ename <> 'ALLEN';
于是我们就得到了想要的结果,多列子查询,仔细咀嚼,顾名思义尔。