SELECT,Count&插入一个查询?

时间:2013-07-22 12:52:45

标签: mysql

我不完全确定这是否可行,但我怀疑它是。

我正在尝试收集一些非常基本的统计数据,所以我有一个“跟踪”表,可以持续存储信息,就像这样;

ID,IP,itemid

每次查看项目时,都会记录访问者的IP地址和项目ID。

我每天都要汇总这些数据并将其插入另一张表中,就像这样;

ID,itemid,views

现在,'views'元素我想要是唯一的 - 所以忽略任何重复的IP地址(只计算一次)。

我知道我可以简单地遍历它们并以这种方式执行,但是只用一个查询就可以完成整个过程吗?

我正在使用MySQL

3 个答案:

答案 0 :(得分:1)

试试这个,

insert into newtable(itemid,views) 
select itemid,count(*) 
from (
select itemid 
from tracker 
group by itemid,ip
) 
as a 
group by a.itemid.

答案 1 :(得分:1)

在其他RDBMS中,可以这种方式:

    insert into othertable (field_views, field_itemid)
    select count(distinct t.views), t.itemid from tracker
    group by t.itemid

另见http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

注意,此解决方案意味着在othertable.id

中存在自动增量

答案 2 :(得分:1)

如果您按trackeritemid表进行分组,则不同IP地址的数量应为您想要的观看次数:

INSERT INTO newtable (itemid, views)
SELECT itemid, COUNT(DISTINCT IP)
FROM tracker
GROUP BY itemid;