oracle中 all any in的用法

2021-05-26 07:44:05 字數 1405 閱讀 2191

下面是一些例子

找出員工中,只要比部門號為10的員工中的任何乙個員工的工資高的員工的姓名個工資。也就是說只要比部門號為10的員工中的那個工資最少的員工的工資高就滿足條件。

select ename,sal

from emp

where sal > any(select sal from emp where deptno = 10);

這裡推薦用any,如果你非要用some也是沒有任何問題的,結果是一樣的,只是一般來講some用在「=」的比較從句中。

select ename,sal

from emp

where sal > some(select sal from emp where deptno = 10);

上面的用法完全ok的。

select ename,sal

from emp

where sal = some(select sal from emp where deptno = 30) and deptno not in (select deptno from emp where deptno = 30);

上面才是some的正常用法。其含義是找到和30部門員工的任何乙個人工資相同的那些員工。雖然沒有找到。

最後乙個關鍵字all的用法也很簡單就是要與子查詢的每一結果都要匹配。

select ename,sal

from emp

where sal > all(select sal from emp where deptno = 20);

上面的sql語句的意義與前面的就完全不一樣了,其意義是找到比部門號為20的員工的所有員工的工資都要高的員工,也就是比那個工資最高的員工的還要高的員工

總的來說some和any用法意義是一樣的,僅在詞法上有不同,都表示對子查詢結果集中「或」的比較關係,而all則是對子查詢結果集總每乙個結果「與」的關係

舉幾個例子來說明all和any的用法

1. select * from tablea where fld > all(select fld from tablea)

這相當於

select * from tablea where fld > (select max(fld) from tablea)

2. select * from tablea where fld < any(select fld from tablea)

這相當於

select * from tablea where fld < (select min(fld) from tablea)

3. select * from tablea where fld = any(select fld from tablea)

這相當於

select * from tablea where fld in (select fld from tablea)

oracle中累計求和 oracle累計求和

poj2001 shortest prefixes trie樹應用 沉迷wow又頹了兩天orz,暴雪爸爸要在國服出月卡了.這是要我好好學習嗎?趕緊來刷題了.oj 題目大意是求所有字串裡每乙個字元 硬體相關 jtag介面 jtag joint test action group,聯合測試行動小組 是一...

oracle中累計求和 oracle累計求和

oracle累計求和 將當前行某列的值與前面所有行的此列值相加,即累計求和 方法一 with t as select 1 val from dual union all select 3 from dual union all select 5 from dual union all select ...

Oracle中臨時表

最近考慮到我們的資料庫端寫儲存過程關於臨時表使用的情況,由於我們 現在還不清楚資料庫端到底是怎麼處理的,是否和sql server的處理方式相 同,是否會存在隱患等等一些問題,為了避免將來不必要的麻煩我做了深 入的研究和檢視了一些權威的資料,現在和大家共享,希望大家在處理 oracle臨時表是注意一...