MySQL子查詢

到目前爲止我們所看到的SELECT語句都是簡單查詢,即從單個數據庫表中檢索數據的單條語句。SQL還允許創建子查詢,即嵌套在其他查詢語句中的查詢。

下面給出嵌套查詢的例子。


一個表示存儲訂單信息,包括訂單號,客戶ID,訂單日期等,如下所示:



一張表示存儲訂單物品信息,如下:



還有一張表存儲的是客戶的信息,如下:



假如現在的需求是要找出訂購物品TNT2的所有客戶。我們發現通過第二張訂購物品表能夠獲取到訂單編號,依據訂單編號,可以再第一張訂單信息表中獲取到相應的客戶id,通過客戶id即可以在第三張表中查詢到客戶信息了:

因此有 TNT2 ----> order_num ----> cust_id-----> cust_name,依據之前的SELECT語句可以分條來查詢:



現在可以把第一個查詢變爲第二個查詢的子查詢來做:



同理我們可以把三個查詢語句嵌套到一條SQL語句中,嵌套的SQL語句由內向外計算,即最裏面的SELECT語句計算出的結果給外一層的SELECT語句來用:



另外還可以將計算字段作爲子查詢, 如,我們需要計算出custem表中以個客戶需要支付多少錢?先用一個SELECT找出該客戶有哪些訂單,再將這些訂單的價錢加在一起:

先看cust_id = 10001的訂單 20005,20009相加的情況:



SUM()函數是進行列相加,正好可以把total當成一列來使用,進行求和, IN(20005,20009)轉換爲SELECT語句就比較簡單了:



下面語句是計算每一個客戶所需要支付的總金額,是對以上SQL語句的進一步改進,一次求出所有的客戶的應付金額:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章