子查詢:巢狀在其他查詢中的查詢。
有三張表分別如下:
customers: 儲存顧客資訊
orderitems:只儲存訂單資訊,無客戶資訊
orders:儲存訂單號和顧客id
注意:一般在子查詢中,程式先執行在巢狀在最內層的語句,再執行外層。因此在寫子查詢語句時,可以先測試下內層的子查詢語句是否輸出了想要的內容,再一層層往外測試,增加子查詢正確率。否則多層的巢狀使語句可讀性很低。
子查詢訓練:
訓練1:
查詢買了商品為』tnt2』的顧客資訊
子查詢中涉及3張表的訂單。因此分三步,1. 在orderitems裡找出tnt2的訂單號;2. 在orders裡找出第一步找出的訂單號對應的客戶id;3. 在customers中找出第二步對應客戶的所有資訊。
1. 在orderitems裡找出tnt2的訂單號
select order_num from orderitems
where prod_id='tnt2';
2. 在orders裡找出第一步找出的訂單號對應的客戶id
select cust_id from orders
where order_num
in (select order_num from orderitems where prod_id='tnt2');
3. 在customers中找出第二步對應客戶的所有資訊
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'));
這樣就得到結果啦~
子查詢一般與in操作符結合使用,也可用=>《等。
另外,子查詢還可以用於計算字段。
訓練2:
如,想要查詢每個客戶的訂單數
分步思考:1. 查詢某個客戶的訂單數;2. 某個客戶改為所有客戶。
1. 查詢某個客戶的訂單數
select count(*) as orders1 from orders where cust_id =10001;
2. 某個客戶改為所有客戶
select cust_name, cust_state,
(select count(*) from orders where orders.cust_id=customers.cust_id)
as orders1
from customers
order by cust_name;
MySQL子查詢 巢狀查詢
有三張表分別如下 customers 儲存顧客資訊 orderitems 只儲存訂單資訊,無客戶資訊 orders 儲存訂單號和顧客id 子查詢訓練 訓練1 查詢買了商品為 tnt2 的顧客資訊 子查詢中涉及3張表的訂單。因此分三步,1.在orderitems裡找出tnt2的訂單號 2.在order...
MySQL子查詢巢狀查詢
有三張表分別如下 customers 儲存顧客資訊 orderitems 只儲存訂單資訊,無客戶資訊 orders 儲存訂單號和顧客id 注意 一般在子查詢中,程式先執行在巢狀在最內層的語句,再執行外層。因此在寫子查詢語句時,可以先測試下內層的子查詢語句是否輸出了想要的內容,再一層層往外測試,增加子...
mysql求和 子查詢 MySQL子查詢
到現在為止,我們已經表明,以select宣告是乙個簡單的查詢。該單個語句從單個資料庫表中檢索資料。sql還同意建立乙個子查詢。即巢狀在其他查詢的查詢。下列實施例給出巢狀查詢。一種表示訂單資訊儲存,包含訂單號,客戶id。訂購日期。例如以下所看到的 一張表示儲存訂單物品資訊,例如以下 另一張表儲存的是客...