我們可以加入一個表的子查詢的結果,如:在SQL或MySQL中,我們可以加入表和子查詢結果嗎?
select name from gifts
LEFT OUTER JOIN (select giftID from gifts) ...
如果不是,可以將它通過一些方法,比如創建臨時表來完成?
P.S.子查詢只能使用IN或NOT IN,或者EXISTS或NOT EXISTS嗎?
我們可以加入一個表的子查詢的結果,如:在SQL或MySQL中,我們可以加入表和子查詢結果嗎?
select name from gifts
LEFT OUTER JOIN (select giftID from gifts) ...
如果不是,可以將它通過一些方法,比如創建臨時表來完成?
P.S.子查詢只能使用IN或NOT IN,或者EXISTS或NOT EXISTS嗎?
是的,sql在集合上工作,子查詢返回集合作爲結果,所以這是可能的。
你必須給子查詢的名稱:(select * from table) as sub
是你可以使用select作爲INNER JOIN你就必須給它一個別名:
SELECT Name FROM Transactions T
INNER JOIN (SELECT Distinct customerID As CustomerID FROM Customers) A
ON A.CustomerID = T.CustomerID
另一種方式,可能是創建子查詢的VIEW。然後像通常那樣做一個JOIN(通過引用VIEW)。
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
您所描述的內容稱爲派生表或內聯視圖,並且很常見。沒有他們我就無法活下去! – 2010-04-27 14:18:39