繁体   English   中英

MySQL:如果第一个条目选择在哪里区分,而不在查询中区分

[英]MySQL: Select Where Distinct if 1st entry, not Distinct within query

我有一个包含列的表,电子邮件,IP,状态,城市,时间戳,ID

我需要计算电子邮件和IP的不同之处,按州分组

因此,当我运行MYSQL查询时,

select State, City ,count(distinct( Email )), count(DISTINCT( IP))
from table
group by Stat, City

它使我与众不同,但与非

我需要大量不同的电子邮件和不同IP; 按州,市分组。

而且,在组内不能有区别,它必须是EMAIL的第一个实例,并且是整个数据库中IP的第一个实例。 因此,即使我选择一个特定日期,如果我将其展开并添加一个日期参数,我仍然可以检查整个数据库的唯一性。

所以如果我需要

select state, city, count ( distinct ( IP ) , count ( distinct ( EMAIL )) 
from table
where timestamp > date(2014-12-01)
group by state, city

这是什么类型的查询? 我该怎么做呢?

我的直觉告诉我我需要按照建议进行CONCAT,但还要在内部进行另一次选择。 因此,选择整个数据库不同的ip,然后从另一个选择中选择该特定条件。

这可以帮助您有一个“ distinct(A && B)”

从表GROUP BY C,D选择SELECT DISTINCT(CONCAT(A,'_',B)),C,D

我们努力在生产服务器上执行此操作,发现所需查询过于占用资源。 因此,我们创建了一个表,其中包含该项发生的第一个实例的更新,然后我们使用如下联接检查计数:

select count(a.State) from tablename A
inner join table_update  U
on a.id = u.id
WHERE a.parameters..
and c.first_email = 1
and c.first_ip = 1

我们找不到单个表,该表无法使我们的服务器瘫痪并拥有40万条记录。 它不是一个经典的答案,而是我们必须使用的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM