结合UNION和LEAST的查询构造

时间:2011-05-18 07:36:56

标签: mysql sql

我有一个电子邮件订阅表和一个用户表。我需要将两者结合起来获取所有电子邮件,因为可以创建一个没有订阅的帐户,反之亦然。到目前为止很容易:

SELECT email FROM emailcapture
UNION
SELECT email FROM cpnc_User

现在,这将获得所有电子邮件的完整列表。对于此合并列表上的每封电子邮件,我需要添加额外的信息:创建日期。 emailcapture和cpnc_User表都有一个“created”字段。如果两个日期都存在,则创建日期应该是两个日期中的较早日期,或者,如果只存在一个日期而另一个日期为NULL,则它应该是存在的日期。

如何更改此查询以便返回此额外信息,创建日期?请记住,我查找的新查询应返回与上述查询完全相同的行数。

谢谢, 约拿

1 个答案:

答案 0 :(得分: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