您好,登錄后才能下訂單哦!
這篇文章主要介紹了Oracle中集合查詢的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
使用并集運算,查詢20號部門或30號部門的員工信息
select * from emp where deptno = 20 union select * from emp where deptno = 30;
注意:
union:二個集合中,如果都有相同的,取其一
union all:二個集合中,如果都有相同的,都取
使用set time/timing on,打開時間的開關
set time on; set time off;
使用set time/timing off,關閉時間的開關
set timing on; set timint off;
使用交集運算[intersect],查詢工資在1000-2000和1500-2500之間的員工信息(方式一)
select * from emp where sal between 1000 and 2000 intersect select * from emp where sal between 1500 and 2500;
用where行過濾,查詢工資在1000-2000和1500-2500之間的員工信息(方式二)
select * from emp where (sal between 1000 and 2000) and (sal between 1500 and 2500);
使用差集運算[minus],查詢工資在1000-2000,但不在1500-2500之間的員工信息(方式一)
select * from emp where sal between 1000 and 2000 minus select * from emp where sal between 1500 and 2500;
使用where行過濾,查詢工資在1000-2000,但不在1500-2500之間的員工信息(方式二)
select * from emp where (sal between 1000 and 2000) and (sal not between 1500 and 2500);
集合查詢的細節:
1)集合操作時,必須確保集合列數是相等的
select empno,ename,sal,comm from emp where deptno = 20
union
select empno,ename,sal from emp where deptno = 30;錯
2)集合操作時,必須確保集合列類型對應相同
select empno,ename,sal,comm from emp where deptno = 20
union
select empno,ename,sal,hiredate from emp where deptno = 30;錯
3)A union B union C = C union B union A
select * from emp where deptno = 10
union
select * from emp where deptno = 20
union
select * from emp where deptno = 30;
4)當多個集合操作時,結果的列名由第一個集合列名決定
select empno "編號",ename "姓名",sal "薪水" from emp where deptno = 20 union select empno,ename,sal from emp where deptno = 10;
當多表查詢,子查詢,集合查詢都能完成同樣任務時,按如下優化方案選擇: 多表查詢->子查詢->集合查詢 |
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Oracle中集合查詢的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。