Oracle组合查询(二)

2014-11-24 12:25:22 · 作者: · 浏览: 1
FAN YU SESSION
QING SHAN GANG DU HUA YUAN
在第二个表:EMPCHKTMP中是没有的。
总结:UNION ALL 取全集,UNION 取并集(除去重复项),INTERSECT 取交集,MINUS 取子集。。且各个查询字段即SELECT后面的字段必须是同一类型,且数量要相等..
下面加入第三个查询表:EMPCHKSUB,预览:
[sql]
SQL> SELECT * FROM EMPCHKSUB;
EMP_ID EMP_NAME EMP_PHONE EMP_SALRAY
--------- --------------- ----------- ----------
100001 CAI FANG JIE 18218429577
100002 LU JING HUAN 1397165903
100003 WU JING XIN 187****235
100004 LI WEI 197****436
组合查询可以组合两个或者多个表,例如下面根据名字字段进行查询:
[sql]
SQL> SELECT EMP_NAME FROM EMPCHK
2 UNION ALL SELECT EMP_NAME FROM EMPCHKTMP
3 UNION ALL SELECT EMP_NAME FROM EMPCHKSUB
4 ORDER BY EMP_NAME ;
EMP_NAME
--------------------
CAI FANG JIE
CAI FANG JIE
CAI FANG JIE
DING LING
LI WEI
LI WEI
LU JING HUAN
LU JING HUAN
WU JING XIN
WU JING XIN
WU JING XIN
ZOU QI LEI
12 rows selected
返回了三个表中所有的名字字段。
再比如用MINUS进行组合查询,返回TAB_1 - TAB_2 - TAB_3的集合。
[sql]
SQL> SELECT EMP_NAME FROM EMPCHK
2 MINUS SELECT EMP_NAME FROM EMPCHKTMP
3 MINUS SELECT EMP_NAME FROM EMPCHKSUB
4 ORDER BY EMP_NAME ;
EMP_NAME
--------------------
ZOU QI LEI
可以看到名字字段ZOU QI LEI 只存在于EMPCHK中,且不存在于EMPCHKTMP和EMPCHKSUB两个表中。

作者 Free_Program_1314