2011-05-18 77 views
1

我有一個電子郵件訂閱表和一個用戶表。我需要將兩者結合起來以獲得所有電子郵件,因爲可以在不訂閱的情況下創建帳戶,反之亦然。到目前爲止足夠簡單:查詢構造合併UNION和至少

SELECT email FROM emailcapture 
UNION 
SELECT email FROM cpnc_User 

現在,這使我得到所有電子郵件的完整列表。對於這個組合列表上的每封電子郵件,我需要添加一條額外信息:創建日期。 emailcapture和cpnc_User表都有一個「創建」字段。創建的日期應該是兩個日期中較早的日期,如果兩個日期都存在,或者如果只有一個存在而另一個是NULL,則它應該是存在的日期。

如何更改此查詢,以便它返回此額外信息,創建日期?請記住,我所查詢的新查詢應返回與上述查詢完全相同的行數。

感謝, 約拿

+0

據我瞭解有可能是重複的電子郵件這些表中?即在emailcapture和cpnc_User中的[email protected]。它是否正確?如果是,您確定要從eamilcapture發送的電子郵件的創建日期顯示爲來自cpnc_User的電子郵件的創建日期嗎?這看起來像有重複的記錄 – 2011-05-18 07:43:30

回答

2
SELECT i.email, MIN(i.date_creation) FROM 
(SELECT email, date_creation FROM emailcapture 
UNION ALL 
SELECT email, date_creation FROM cpnc_User) as InnerTable i 
GROUP BY i.email 
+0

非常感謝。我不得不向內部派生表添加別名,但在此之後它完美運行。 – Jonah 2011-05-18 07:54:26

+0

調整我的答案爲未來的讀者,或隨意編輯答案,如果它不是一個工作命令是:) – Konerak 2011-05-18 08:18:16