Oracle All運算子

來源:互聯網
上載者:User

標籤:nat   name   alt   group   order   use   必須   oracl   ice   

在本教程中,您將學習如何使用Oracle ALL運算子將值與列表或子查詢進行比較。

Oracle ALL操作符簡介

Oracle ALL操作符用於將值與子查詢返回的值列表或結果集進行比較。

以下顯示了與列表或子查詢一起使用的ALL運算子的文法:

operator ALL ( v1, v2, v3)operator ALL ( subquery)

在這個文法中,

  • ALL運算子前面必須有一個運算子,例如:=!=,>>=<<=,後跟一個列表或子查詢。
  • 列表或子查詢必須用圓括弧包圍。

使用ALL運算子將值與列表進行比較時,Oracle將初始條件擴充到列表的所有元素,並使用AND運算子將它們組合在一起,如下所示:

SELECT    *FROM    table_nameWHERE    c > ALL (        v1,        v2,        v3    );--  以上語句轉換為 ALL 運算子後SELECT    *FROM    table_nameWHERE    c > v1    AND c > v2    AND c > v3;

如果使用ALL運算子將值與子查詢返回的結果集進行比較,則Oracle執行兩步轉換,如下所示:

SELECT product_name,       list_priceFROM productsWHERE list_price > ALL    ( SELECT list_price     FROM products     WHERE category_id = 1 )ORDER BY product_name;-- 1st step: transformation that uses ANYSELECT product_name,       list_priceFROM products p1WHERE NOT( p1.list_price <= ANY            (SELECT list_price             FROM products p2             WHERE category_id = 1 ))ORDER BY product_name; -- 2nd step: transformation that eliminates ANYSELECT product_name,       list_priceFROM products p1WHERE NOT EXISTS    (SELECT p2.list_price     FROM products p2     WHERE p2.category_id = 1       AND p2.list_price >= p1.list_price )ORDER BY product_name;

如果子查詢不返回行,則以下條件的計算結果為true

operator ALL (subquery)

這意味著在WHERE子句中使用上述條件的查詢將返回所有行,以防子查詢返回任何行。

SELECT    *FROM    table_nameWHERE    col operator ALL(subquery);
Oracle ALL運算子樣本

以下樣本尋找每個類別中產品的平均標價:

SELECT    ROUND( AVG( list_price ),2 ) avg_list_priceFROM    productsGROUP BY    category_idORDER BY    avg_list_price DESC;

執行上面範例程式碼,得到以下結果 -

1. col> ALL(list)

如果col大於列表中的最大值,則運算式的計算結果為true

例如,以下查詢尋找標價大於平均價格列表最大價格的產品:

SELECT    product_name,    list_priceFROM    productsWHERE    list_price > ALL(        SELECT            AVG( list_price )        FROM            products        GROUP BY            category_id    )ORDER BY    list_price ASC;

執行上面範例程式碼,得到以下結果 -

2. col < ALL(list)

如果col小於列表中的最小值,則運算式的計算結果為true

SELECT    product_name,    list_priceFROM    productsWHERE    list_price < ALL(        SELECT            AVG( list_price )        FROM            products        GROUP BY            category_id    )ORDER BY    list_price DESC;

例如,以下查詢將尋找標價低於平均價格列表中最小价格的產品:

3. col> = ALL(list)

如果col大於或等於列表中的最大值,則運算式的計算結果為true

以下語句返回列表價格大於或等於2200的CPU產品:

SELECT    product_name,    list_priceFROM    productsWHERE    list_price >= ALL(        1000,        1500,        2200    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

4. col <= ALL(list)

如果col小於或等於列表中的最小值,則運算式的計算結果為true

以下語句返回標價小於或等於列表中最小值的977.99的CPU產品。

SELECT    product_name,    list_priceFROM    productsWHERE    list_price <= ALL(        977.99,        1000,        2200    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

5. col = ALL ( list)

如果col匹配列表中的所有值,則運算式的計算結果為true

6. col!= ALL(list)

如果col不匹配列表中的任何值,則運算式的計算結果為true

在本教程中,您已經學習如何使用Oracle ALL操作符將值與列表或子查詢進行比較。


Oracle All運算子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.