我们可以加入一个表的子查询的结果,如:在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