在SQL或MySQL中,我们可以连接表和子查询结果吗?

问题描述 投票:0回答:4

我们能否将子查询的结果连接到一个表中,例如:

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

如果不行,是否可以通过一些方法来实现,比如创建临时表?

附注子查询只能使用 IN 或 NOT IN、EXISTS 或 NOT EXISTS 出现吗?

sql mysql join subquery
4个回答
10
投票

是的,sql 适用于集合;子查询返回一个集合作为结果,所以这是可能的。

您必须为子查询命名:

(SELECT * FROM table) AS sub
(SELECT * FROM table) sub
。作为完整查询:

SELECT name FROM gifts
    LEFT OUTER JOIN (SELECT giftID FROM gifts) AS sub
    ON ...
WHERE ...

8
投票

是的,您可以使用选择作为 INNER JOIN,您只需给它一个别名:

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

1
投票

另一种方法,可能是创建子查询的视图。然后像平常一样进行 JOIN(通过引用 VIEW)。


1
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.