2013-10-01 73 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`;