我們考慮一個問題,列出訂購物品‘RGAN01’的所有顧客的信息,那我們應該用怎樣的信息檢索拂蝎?
- 檢索包含物品‘RGAN01’的所有訂單號
- 從這個訂單號里到orders表里檢索出custid
- 再根據(jù)custid從customers的表里檢索顧客的信息
上面三個步驟每個步驟都可以單獨作為一個查詢來執(zhí)行温自,這就出現(xiàn)了子查詢的定義。
不使用子查詢“
select order_num
from orderitems
where prod_id = 'RGAN01';
select cust_id
from orders
where order_num in (20007,20008)
使用子查詢:
select cust_id
from orders
where order_num in (select order_num
from orderitems
where prod_id = 'RGAN01');
使用計算字段作為子查詢
假設有這么一個問題,顯示customers表中的每個顧客訂單的總數(shù):
- 第一步馆里,自然是檢索出所有顧客的列表
- 然后對于每個顧客統(tǒng)計其在orders表中的訂單數(shù)目
select customers.cust_name, customers.cust_state,(
select count(*)
from orders
where orders.cust_id = customers.cust_id
) as orders
from customers
order by cust_name;