2010-06-17 98 views
0

當我有返回的結果,既包括合同號2個SQL查詢來獲得獨特的價值觀,現在我希望得到的合同號如何使用UNION MySQL查詢

的獨特價值,這裏的查詢

(SELECT contractno, dsignoff FROM campaigns WHERE clientid = 20010490 AND contractno != '' GROUP BY contractno,dsignoff) UNION (SELECT id AS contractno,signoffdate AS dsignoff FROM contract_details WHERE clientid = 20010490) 

因此,例如,如果union之前的第一個查詢返回兩個合同no no 10,並且union之後的sql查詢返回10,那麼我們總共有3行,但是因爲所有三行的contractno是10,我只需要返回一行,這可能嗎?

+0

只有日期也一樣。也就是說,如果contractno和dsignoff是相同的,你只能得到一個明確的聯盟。如果日期不同,您仍然可以編寫代碼來獲取它們,但不能使用聯合查詢。 – MJB 2010-06-17 13:05:53

回答

3

你可以把你的當前請求在臨時表,並執行一個選擇在此表:

SELECT 
    * 
FROM 
    (
    /* Your request goes here */ 
    SELECT 
     contractno, 
     dsignoff 
    FROM 
     campaigns 
    WHERE 
     clientid = 20010490 AND contractno != '' 
    GROUP BY 
     contractno,dsignoff 
    UNION 
    SELECT 
     id AS contractno, 
     signoffdate AS dsignoff 
    FROM 
     contract_details 
    WHERE clientid = 20010490) 
) AS tmp 
GROUP BY 
    tmp.contractno 

(但你肯定你不能做你想加入嗎?)

+0

左加入做了這個伎倆,將接受你的回答,由於最後的評論 – Roland 2010-06-17 14:06:18

+0

@羅蘭,我會有興趣看看你的左加入是如何制定出來的。你可能會把這個問題作爲這個問題的答案嗎? – Sablefoste 2014-04-23 17:22:43