2010-04-27 57 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