分析一下聚合函數與連接表的組合使用 看這樣一個關系 Customers(cust_id,cust_name,cust_contact) Orders(order_num,cust_id,order_date) 如果有這樣的檢索語句: Sql代碼 select cust_name,cust_contact,( select count(*) from Orders where Orders.cust_id=Customers.cust_id group by cust_id) from Customers 其運作步驟為: 1.從Orders表中檢索出每個cust_id所具有的訂單數量 可以那麼做,因為孤立擺出count(*)是在group by 顧客編號基礎上聚合的。 並且在聚合的之前,先進行連接表操作。把orders , Customers連接起來了。 這樣內外只的就是同意顧客的信息. 2.外層列出其他需要的顧客信息。 注意點: 內層的通常用做單獨孤立的聚合函數, 內層的分組操作前必須給出與外層的連接條件。 外層的select後面的選擇列基本都是在外面的表裡。 總結,這個句子究竟屬於子查詢呢還是普通的連接。 很明顯。是子查詢,以為是select 裡面包含一個select 句子。 非常特殊,子句可以用作一個檢索列!~就是這樣。 以後碰到突然要分組但是又涉及兩個不同的表,可以嘗試這樣的思路。