0

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

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

ID, IP, itemid

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

每天,我想总结这些数据并将其插入另一个表中,就像这样;

ID, itemid, 浏览量

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

我知道我可以简单地遍历它们并这样做,但是是否可以只用一个查询来完成整个过程?

我正在使用 MySQL

4

3 回答 3

1

如果您按 对tracker表进行分组itemid,则不同 IP 地址的数量应该是您想要的视图数量:

INSERT INTO newtable (itemid, views)
SELECT itemid, COUNT(DISTINCT IP)
FROM tracker
GROUP BY itemid;
于 2013-07-22T13:14:46.887 回答
1

尝试这个,

insert into newtable(itemid,views) 
select itemid,count(*) 
from (
select itemid 
from tracker 
group by itemid,ip
) 
as a 
group by a.itemid.
于 2013-07-22T13:05:20.700 回答
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 中存在自动增量

于 2013-07-22T13:08:17.390 回答