Mysql SQL,多个电子邮件地址问题

Mysql SQL,多个电子邮件地址问题,mysql,sql,Mysql,Sql,我有一个包含以下数据的用户表MySQL id email creation_date 1 bob@mail.com 2011-08-01 09:00:00 2 bob@mail.com 2011-06-24 02:00:00 3 john@mail.com 2011-02-01 04:00:00 4 john@mail.com 2011-08-05 20:30:00 5 john@mail.com 2011-08-05 23:00:00

我有一个包含以下数据的用户表MySQL

id  email       creation_date
1   bob@mail.com    2011-08-01 09:00:00
2   bob@mail.com    2011-06-24 02:00:00
3   john@mail.com   2011-02-01 04:00:00
4   john@mail.com   2011-08-05 20:30:00
5   john@mail.com   2011-08-05 23:00:00
6   jill@mail.com   2011-08-01 00:00:00
如您所见,我们允许电子邮件重复,因此可以使用相同的电子邮件地址注册多个帐户。 现在我需要选择按创建日期排序的所有地址,但不选择重复的地址。我想这很容易

SELECT * FROM (SELECT * FROM users ORDER BY creation_date) AS X GROUP BY email
预期结果:

id  email       creation_date
2   bob@mail.com    2011-06-24 02:00:00
6   jill@mail.com   2011-08-01 00:00:00
3   john@mail.com   2011-02-01 04:00:00
id  email       creation_date
1   bob@mail.com    2011-08-01 09:00:00
4   john@mail.com   2011-08-05 20:30:00
5   john@mail.com   2011-08-05 23:00:00
但是,我还需要选择所有其他地址,即第一次查询的结果中不存在的所有地址。这里允许复制

预期结果:

id  email       creation_date
2   bob@mail.com    2011-06-24 02:00:00
6   jill@mail.com   2011-08-01 00:00:00
3   john@mail.com   2011-02-01 04:00:00
id  email       creation_date
1   bob@mail.com    2011-08-01 09:00:00
4   john@mail.com   2011-08-05 20:30:00
5   john@mail.com   2011-08-05 23:00:00

有什么想法吗?性能非常重要,因为实际数据库非常庞大

在SQL server中,我们将使用列组执行Select语句

SELECT * FROM a
FROM users a
LEFT JOIN (SELECT email, MIN(creation_date) as min_date GROUP BY email)x ON 
 (x.email = a.email AND x.min_date=a.creation_date)
WHERE x.email IS NULL
以下是一些MYSQL示例:

我希望这有帮助