MySQL:如果第一个条目选择Where Distinct,在查询中不区分

时间:2014-12-12 21:51:23

标签: mysql

我有一个包含电子邮件,Ip,州,城市,TimeStamp,Id

列的表

我需要计算电子邮件和IP的区别,逐个国家/地区

所以当我运行MYSQL查询时,

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

它给了我不同的每个,但不是AND

我需要一些不同的电子邮件&&独特的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,然后从另一个选择中选择该特定条件。

2 个答案:

答案 0 :(得分:0)

这有助于获得“不同(A&& B)”

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

答案 1 :(得分:0)

我们很难在生产服务器上执行此操作,并发现所需的查询过于耗费资源。所以我们创建了一个表,在第一个实例上发生了项目更新,然后我们通过连接检查计数,如下所示:

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

我们找不到一张表,不会让我们的服务器失效,有400,000条记录。它不是一个优雅的答案,而是我们必须使用的。