2010-04-27 81 views
2

我們可以加入一個表的子查詢的結果,如:在SQL或MySQL中,我們可以加入表和子查詢結果嗎?

select name from gifts 
    LEFT OUTER JOIN (select giftID from gifts) ... 

如果不是,可以將它通過一些方法,比如創建臨時表來完成?

P.S.子查詢只能使用IN或NOT IN,或者EXISTS或NOT EXISTS嗎?

+0

您所描述的內容稱爲派生表或內聯視圖,並且很常見。沒有他們我就無法活下去! – 2010-04-27 14:18:39

回答

5

是的,sql在集合上工作,子查詢返回集合作爲結果,所以這是可能的。

你必須給子查詢的名稱:(select * from table) as sub

5

是你可以使用select作爲INNER JOIN你就必須給它一個別名:

SELECT Name FROM Transactions T 
INNER JOIN (SELECT Distinct customerID As CustomerID FROM Customers) A 
ON A.CustomerID = T.CustomerID 
1

另一種方式,可能是創建子查詢的VIEW。然後像通常那樣做一個JOIN(通過引用VIEW)。

0
SELECT CustomerId, 
     Name, 
     Address 
FROM Table1 M 
INNER JOIN Table2 C ON M.CustomerId=C.CustomerId 
WHERE CustomerId IN 
    (SELECT CustomerId 
    FROM Table1 M 
    INNER JOIN Table2 ON M.CustomeID=C.CustomerId) 
ORDER BY CustomerId, 
     Name, 
     Address 
相關問題