子查詢(Subquery)
小小秘訣:使用子查詢時,可先做一次子查詢的條件無誤之後再做整筆查詢。較不會出錯!!
可與以下 SELECT、INSERT...INTO ..SELECT、INSERT...INTO、DELETE、UPDATE 陳述式搭配使用。
範例1.和供應商”桶一”相同城市的供應商!
select 供應商 , 城市
from supplier
where 城市 =
(select 城市
from supplier
where 供應商="桶一")and 供應商< >桶一" # 供應商不等於桶一
範例2.與客戶"琴攝影"同一個城市的客戶
select 公司名稱,城市
from customer
where 城市 =
(select 城市
from customer
where 公司名稱 = "琴攝影")and 公司名稱 < > "琴攝影"客戶不等於琴攝影
範例3.和烤肉醬同一個供應商的商品有?
select 產品,供應商編號
from product
where 供應商編號 =
(
select 供應商編號
from product
where 產品="烤肉醬") and 產品< >"烤肉醬"
述詞的使用:子查詢可搭配述詞,在where子句中判斷使用。搜尋子查詢結果集的運算式,搭配[ANY | ALL | SOME]....等述詞使用。
在子查詢的結果值不只一個時會用IN述詞。
使用 ANY 或 SOME 述詞,這兩者為同義字,能擷取滿足比較子查詢擷取記錄的主查詢記錄。
範例1.比所有起司類商品還貴的商品
select 產品 , 單價
from product
where 單價 > all
(select 單價 from product
where 產品 like'%起司%'
order by 單價 desc
)
範例2.比任何一種起司類商品還貴的商品
select 產品 , 單價
from product
where 單價 > any
(select 單價 from product
where 產品 like'%起司%'
order by 單價 desc
)
and 產品 not like '%起司%'
範例3.查詢所有訂單日期在任一個業務人員雇用日期之後的記錄
select 訂單號碼 ,訂單日期
from ord
where 訂單日期 > any
(select 雇用日期
from emp
where 職稱 = '業務'
)
select 產品 , 單價 , 庫存量
from product
where 產品編號 in
(select 產品編號
from detail
where 單價>25
)
No comments:
Post a Comment