多列子查询

多列子查询:

返回多列数据的子查询语句。当多列子查询返回单行数据时,在WHERE子句中可以使用单行比较符;当多列子查询返回多行数据时,在WHERE子句中必须使用多行比较符(IN,ANY,ALL)。
    Sql代码
SELECT ename,job,sal,deptno FROM emp WHERE (deptno,job)=(SELECT deptno,job FROM emp WHERE id=10000);  
 
当执行成对比较是时,因为要求多个列的数据必须同时匹配,所以必须要使用多列子查询实现。
Sql代码
SELECT ename,sal,comm,dptno FROM emp WHERE (sal, nvl(comm,-1)) IN (SELECT sal, nvl(comm,-1) FROM emp WHERE deptno=30);  
 
执行非成对比较时,应该使用多个多行子查询来实现。
    Sql代码
SELECT ename,sal,comm,deptno FROM emp WHERE sal IN (SELECT sal FROM emp WHERE deptno=30) AND nvl(comm,-1) IN (SELECT nvl(comm,-1) FROM emp WHERE deptno=30);  

posted @ 2012-07-25 15:56  JJ.Net  阅读(492)  评论(0)    收藏  举报