0

我只想跟踪每个文章页面的唯一访问者。我做了一个有 2 个字段的表格。article_id作为ip唯一

预期的输出应该是这样的:

article_id    *       IP
52            -  100.200.300.400
52            -  20.30.20.40
52            -  30.40.50.60
93            -  108.207.302.403
93            -  10.30.20.40

但它不起作用,这就是我得到的:

article_id    *       IP
52            -  100.200.300.400
93            -  10.30.20.40

我想我把钥匙设置错了。

4

4 回答 4

3

当您定义article_id为主时,您将永远不会有两条相同的记录article_id

为避免article_id+ip对的重复,您可以定义两个字段的唯一索引:article_idAND ip

例如:

CREATE  TABLE `visits` (
  `article_id` INT NOT NULL ,
  `ip` VARCHAR(15) NULL ,
  UNIQUE INDEX `unique_article_ip` (`article_id`, `ip`) )
ENGINE = MyISAM;
于 2012-09-16T11:45:44.750 回答
1

主键也是唯一的,因此它最多会在表中出现一次。

定义:关系表的主键唯一标识表中的每条记录。

正确的主键将是两列。

于 2012-09-16T11:38:09.770 回答
0

您需要一个包含以下内容的表格:

ID - 生成的唯一编号,这将是 PK DATE - 访问日期,这将有助于保留来自一个 IP 的唯一访问 ARTICLE_ID - 文章 ID IP - 仅 IP

现在您在以下位置创建 UNIQUE INDEX:ARTICLE_ID、ARTICLE_ID、IP - 可能按此顺序,但这取决于您要执行的 qyeries。通过这种方式,您将每天跟踪文章的唯一 IP。

于 2012-09-16T11:48:21.483 回答
0

主键唯一标识一行。一张表最多可以有一个主键,但可以有多个唯一键。你得到的输出清楚地证明了这一点,因为你有article_id作为主键

于 2012-09-16T11:50:35.683 回答