2013-10-01 75 views
6

是否可以将两个表的UNION的结果与第三个表结合起来?像这样的:MySQL加入联盟的结果

(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) a 
LEFT JOIN `qt1` 
ON `qt1`.`Fund ID` = a.`Fund_ID` 

但这段代码不起作用。我可以在UNION之前的每个SELECT查询中移动JOIN,但宁愿尝试JOINUNION结果。

我该如何解决这个问题?

回答

6

是的,这是可能的。但是,您的代码不正确,因为您缺少SELECT语句本身,因为您的第一个选择变为行集(运行时创建的表)。即你必须指定你想要的SELECT运算符和字段。最简单的情况:

SELECT 
    a.* 
FROM 
    (SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
    SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) AS a 
    LEFT JOIN `qt1` 
    ON `qt1`.`Fund ID` = a.`Fund_ID` 
2
SELECT * FROM 
(SELECT DISTINCT `Fund_ID`, `Fund_Name` FROM `admin` 
    UNION 
SELECT `Fund_ID`,`Fund_Name` FROM `admin_custom` WHERE `admin_custom`.`user_id` = 361) a 
LEFT JOIN `qt1` 
ON `qt1`.`Fund ID` = a.`Fund_ID`;