?
Lv 5
? asked in 電腦與網際網路軟體 · 1 decade ago

資料庫達人請進~Oracle SQL子查詢的分類

我一直搞不清楚子查詢該怎麼放,以位置來說,子查詢可以放在Select(subquery), From(subquery), Where column (subquery)之後,那子查詢在這三個地方有什麼不同嗎?

我這裡有2個例題,都是☆查詢高檔貨之銷售明細資料☆(定價>均價),但子查詢一個是置於where,一個是置於select,到底差別在哪裡呢?

煩請各方高手解答一下。

1子查詢在select

SELECT ProductID "高檔貨品號(定價>平均定價者)", UnitPrice 定價,

(

SELECT SUM(QUANTITY)

FROM [ORDER DETAILS]

WHERE PRODUCTID=Products.ProductID

) 總銷售量

FROM Products

WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM PRODUCTS)

2子查詢在where

SELECT OrderID 訂單編號, ProductID 高檔貨品號,

UnitPrice 售價, Quantity 數量

FROM [Order Details]

WHERE ProductID IN (

SELECT ProductID

FROM Products

WHERE UnitPrice >

(SELECT AVG(UnitPrice) FROM PRODUCTS)

)

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    ☆查詢高檔貨之銷售明細資料☆

    (定價>均價)

    但子查詢

    一個是置於where, >>用子查詢結果挑出你要的

    (定價>均價)

    UnitPrice >

    (SELECT AVG(UnitPrice) FROM PRODUCTS)

    一個是置於select,>>用子查詢結果算出你要的

    總銷售量

    ( SELECT SUM(QUANTITY) FROM [ORDER DETAILS] WHERE PRODUCTID=Products.ProductID) 總銷售量

    到底差別在這裡

    我是 Oracle DBA Oracle ERP/ SAP 顧問 Adempiere Co-Founder

    2008-05-01 20:59:55 補充:

    歡迎問些更有挑戰性的

    Skype: Adempiere

    全球最大 Java + Oracle + WebServie + SOA 開放原碼專案

    please Google Adempiere

  • 悅文
    Lv 6
    1 decade ago

    SubQuery 對oracle db 而言都是一樣的.

    在 parsing時 oracle optimizer 都把它當成 Temporary Table 或 Inline View.

    不同的只是, select or from 後表示讀取SubQuery 結果.

    where 後是將SubQuery 結果拿來當比對條件.

    Source(s): my
Still have questions? Get your answers by asking now.