子查詢總是從內向外處理
#列出訂購tnt2的全部客戶資訊
select * from customers where cust_id in (
select cust_id from orders where order_num in (
select order_num from orderitems where prod_id = 'tnt2'))
#列出每個客戶訂單數量
select cust_name,
(select count(*) from orders
where orders.cust_id=customers.cust_id) as orders
from customers
order by cust_name
#比上面的好理解一點
select a.cust_id,a.cust_name,b.orders
from customers a
left join
(select cust_id,count(*) as orders
from orders
group by cust_id) b
on b.cust_id=a.cust_id
任何時候只要列名可能有多義性,就要使用這種語法
orders.cust_id=customers.cust_id 列名相同時,前面要加上表名
MySQL必知必會十四 使用子查詢
現在,假如需要列出訂購物品tnt2的所有客戶,應該怎樣檢索?下面列出具體的步驟。檢索包含物品tnt2的所有訂單的編號。檢索具有前一步驟列出的訂單編號的所有客戶的id。檢索前一步驟返回的所有客戶id的客戶資訊。上述每個步驟都可以單獨作為乙個查詢來執行。可以把一條select語句返回的結果用於另一條se...
《SQL必知必會》學習筆記 第十四課 組合查詢
1 在乙個查詢中,從不同的表返回結構資料 2 對乙個表執行多個查詢,按乙個查詢返回資料 1 對乙個表執行多個查詢,按乙個查詢返回資料 2 注意 對於複雜的過濾條件或從多表檢索資料時,union更簡單。select id,age,gender from inf where city in c d un...
MySQL必知必會 十四 組合查詢
開始線 mysql也允許執行多個查詢,並將結果作為單個查詢結果集返回,這些組合查詢通常稱為並或復合查詢 有兩種基本情況,其中需要使用組合查詢 1.在單個查詢中從不同的表返回類似結構的資料 2.對單個表執行多個查詢,按單個查詢返回資料 可用union操作符來組合數條sql查詢 查詢 小於等於5的所有物...