MySQL计数(不同(电子邮件)和分组日期(entrydate)

MySQL计数(不同(电子邮件)和分组日期(entrydate),mysql,count,group-by,distinct,Mysql,Count,Group By,Distinct,在获取总的唯一记录和按日期分组方面遇到了一些问题。最终结果是我每天获取总记录,但它没有使用基于独特功能的唯一电子邮件。这是我的查询 SELECT count(distinct(emailaddress)), DATE(EntryDate) FROM tblentries group by DATE(EntryDate) ORDER BY DATE(EntryDate) desc 结果并没有消除每天的重复计数。你有什么想法 谢谢!根据对话,我相信您正在寻找的是每天从未见过的不同电子邮件地址的

在获取总的唯一记录和按日期分组方面遇到了一些问题。最终结果是我每天获取总记录,但它没有使用基于独特功能的唯一电子邮件。这是我的查询

SELECT count(distinct(emailaddress)), DATE(EntryDate)
FROM tblentries
group by   DATE(EntryDate)
ORDER BY DATE(EntryDate) desc
结果并没有消除每天的重复计数。你有什么想法


谢谢!

根据对话,我相信您正在寻找的是每天从未见过的不同电子邮件地址的数量:

SELECT
    DATE(t.EntryDate) as RecordDate,
    COUNT(DISTINCT t.emailaddress) as NewEmailAddresses
FROM
    tblentries t
WHERE
    NOT EXISTS(
        SELECT 1
        FROM tblentries t2
        WHERE
            t2.emailaddress = t.emailaddress
            AND DATE(t2.EntryDate) < DATE(t.EntryDate)
    )
GROUP BY
    DATE(t.EntryDate)
ORDER BY
    DATE(t.EntryDate) ASC;
这是我脑子里想不到的,所以它可能不对,而且会很慢,但我认为这是正确的方向。顺便说一句,如果你计划定期运行此功能,在emailaddress上建立索引将是一个好主意


让我知道这是否有效。

这是否实际运行?select的语法应该是select COUNTDISTINCT emailaddress…括号太多了。聚合列中是否有空值?什么类型是EntryDate?是Date?如果不是,为什么称之为Date?是的,运行良好。不…我没有空值。EntryDate是timestamp.我正在使用date函数获取没有时间值的日期。@Jeremy仅供参考…将SELECT COUNTDISTINCTemailaddress更改为SELECT CountDistinc emailaddress会得到相同的结果。您得到的结果是什么,显示计数没有重复数据消除?只有一行?您得到了什么[从TBLentrys中选择countdistinct dateEntryDate]?谢谢,杰里米。我尝试了这个查询,但在5分钟后我停止了它。想法?我不打算经常运行,这是一个一次性的客户请求。也感谢你澄清了差异。你对emailaddress有索引吗?如果没有,那会有很大的不同。如果你有,嗯……嗯。我们可以做其他事情,但我设置查询运行可能是最简单的。对于100K条记录,它应该不会超过5分钟。@JeremyHolovacs这对我来说也很好。但我担心这会影响性能。我如何修改它以获得更好的性能?确保emailaddress列上有主键和索引,这样会更好ely只能在最极端的情况下工作。@JeremyHolovacs,我有一个类似的要求,我使用了一个类似于您建议的查询,但我收到了错误、未知表或select查询中使用的别名“r1”。其中r1和r2相当于您的t和t2。