oracle中col 的用法,Oracle All
oracle函數(shù) 的 Oracle All
在本教程中,您將學(xué)習(xí)如何使用Oracle ALL運算符將值與列表或子查詢進(jìn)行比較。
Oracle ALL操作符簡介
Oracle ALL操作符用于將值與返回的值列表或結(jié)果集進(jìn)行比較。
以下顯示了與列表或子查詢一起使用的ALL運算符的語法:
operator ALL ( v1, v2, v3)
operator ALL ( subquery)
在這個語法中,
ALL運算符前面必須有一個運算符,例如:=,!=,>,>=,
列表或子查詢必須用圓括號包圍。
使用ALL運算符將值與列表進(jìn)行比較時,Oracle將初始條件擴展到列表的所有元素,并使用AND運算符將它們組合在一起,如下所示:
SELECT
*
FROM
table_name
WHERE
c > ALL (
v1,
v2,
v3
);
-- 以上語句轉(zhuǎn)換為 ALL 運算符后
SELECT
*
FROM
table_name
WHERE
c > v1
AND c > v2
AND c > v3;
如果使用ALL運算符將值與子查詢返回的結(jié)果集進(jìn)行比較,則Oracle執(zhí)行兩步轉(zhuǎn)換,如下所示:
SELECT product_name,
list_price
FROM products
WHERE list_price > ALL
( SELECT list_price
FROM products
WHERE category_id = 1 )
ORDER BY product_name;
-- 1st step: transformation that uses ANY
SELECT product_name,
list_price
FROM products p1
WHERE NOT( p1.list_price <= ANY
(SELECT list_price
FROM products p2
WHERE category_id = 1 ))
ORDER BY product_name;
-- 2nd step: transformation that eliminates ANY
SELECT product_name,
list_price
FROM products p1
WHERE 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;
如果子查詢不返回行,則以下條件的計算結(jié)果為true:
operator ALL (subquery)
這意味著在子句中使用上述條件的查詢將返回所有行,以防子查詢返回任何行。
SELECT
*
FROM
table_name
WHERE
col operator ALL(subquery);
Oracle ALL運算符示例
以下示例查找每個類別中產(chǎn)品的平均標(biāo)價:
SELECT
ROUND( AVG( list_price ),2 ) avg_list_price
FROM
products
GROUP BY
category_id
ORDER BY
avg_list_price DESC;
執(zhí)行上面示例代碼,得到以下結(jié)果 -
1. col> ALL(list)
如果col大于列表中的最大值,則表達(dá)式的計算結(jié)果為true。
例如,以下查詢查找標(biāo)價大于平均價格列表最大價格的產(chǎn)品:
SELECT
product_name,
list_price
FROM
products
WHERE
list_price > ALL(
SELECT
AVG( list_price )
FROM
products
GROUP BY
category_id
)
ORDER BY
list_price ASC;
執(zhí)行上面示例代碼,得到以下結(jié)果 -
2. col < ALL(list)
如果col小于列表中的最小值,則表達(dá)式的計算結(jié)果為true。
SELECT
product_name,
list_price
FROM
products
WHERE
list_price < ALL(
SELECT
AVG( list_price )
FROM
products
GROUP BY
category_id
)
ORDER BY
list_price DESC;
例如,以下查詢將查找標(biāo)價低于平均價格列表中最小價格的產(chǎn)品:
3. col> = ALL(list)
如果col大于或等于列表中的最大值,則表達(dá)式的計算結(jié)果為true。
以下語句返回列表價格大于或等于2200的CPU產(chǎn)品:
SELECT
product_name,
list_price
FROM
products
WHERE
list_price >= ALL(
1000,
1500,
2200
)
AND category_id = 1
ORDER BY
list_price DESC;
執(zhí)行上面示例代碼,得到以下結(jié)果 -
4. col <= ALL(list)
如果col小于或等于列表中的最小值,則表達(dá)式的計算結(jié)果為true。
以下語句返回標(biāo)價小于或等于列表中最小值的977.99的CPU產(chǎn)品。
SELECT
product_name,
list_price
FROM
products
WHERE
list_price <= ALL(
977.99,
1000,
2200
)
AND category_id = 1
ORDER BY
list_price DESC;
執(zhí)行上面示例代碼,得到以下結(jié)果 -
5. col = ALL ( list)
如果col匹配列表中的所有值,則表達(dá)式的計算結(jié)果為true。
6. col!= ALL(list)
如果col不匹配列表中的任何值,則表達(dá)式的計算結(jié)果為true。
在本教程中,您已經(jīng)學(xué)習(xí)如何使用Oracle ALL操作符將值與列表或子查詢進(jìn)行比較。
總結(jié)
以上是生活随笔為你收集整理的oracle中col 的用法,Oracle All的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php万能注入密码,php下的SQL注入
- 下一篇: oracle 表空间热备份,oracle