MySQL必知必會 第十四章 使用子查詢

2021-10-03 19:55:59 字數 740 閱讀 8343

子查詢總是從內向外處理

#列出訂購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的所有物...