標籤: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運算子