1. 程式人生 > 其它 >《SQL必知必會》筆記二:11-課

《SQL必知必會》筆記二:11-課

二、複雜查詢與聯結

在上一篇筆記中提到的所有 SELECT 語句都是簡單查詢,即從單個數據庫表中檢索資料的單條語句。 但現實中,一般的資料庫表都是關係表。

2.1 子查詢

子查詢(subquery),即巢狀在其他查詢中的查詢。
/*涉及到三張表的巢狀子查詢*/
SELECT cust_name, cust_contact
FROM Customers 
WHERE cust_id IN (SELECT cust_id 
                  FROM Orders 
                  WHERE order_num IN (SELECT order_num 
                                      
FROM OrderItems WHERE prod_id = 'RGAN01'));

注意:作為子查詢的 SELECT 語句只能查詢單個列。企圖檢索多個列將返回錯誤。

/*顯示 Customers 表中每個顧客的訂單總數。訂單與相應的顧客 ID 儲存在 Orders 表中*/
SELECT cust_name, 
       cust_state, 
       (SELECT COUNT(*) 
        FROM Orders 
        WHERE Orders.cust_id = Customers.cust_id) AS
orders FROM Customers ORDER BY cust_name;

 

2.2 聯結表