MySQL按国家/地区点击日志,最佳方法

标签 mysql sql

我计划按 IP 国家/地区在 mysql 中记录推荐点击。 假设我的表名为 referral_clicks,并具有 idreferral_idcountry 列。 我现在想到了两种方法:

  1. 创建另一个列clicks,将每个国家/地区/referral_id 设置为 +1。这意味着我必须首先检查特定的 Referral_id 和国家/地区的行是否已存在,如果不存在,则创建它。

  2. 为每个请求插入一个新行。我担心的是,表格可能会变得困惑且太大,因为可能会收到很多推荐请求。

对于类似的事情,现在最好的方法是什么,或者是否有更好的方法?

最佳答案

使用INSERT ... ON DUPLICATE KEY UPDATE

我建议您创建一个包含以下列的表格。

id                (autoincrement)
referral_id
country
clickdate
clicks

我建议您创建一个唯一索引(referral_id,country,clickdate)

然后,我建议您每次想要记录点击时使用以下 SQL:

INSERT INTO referral_clicks (referral_id, country, clickdate, clicks) 
                     VALUES ('whatever', 'whatcountry', CURDATE(), 1) 
ON DUPLICATE KEY UPDATE clicks=click+1

这将为每个推荐 ID、每个国家/地区、每个日期开始一个新行。如果该行已存在,它将为您增加点击

关于MySQL按国家/地区点击日志,最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26125740/

相关文章:

php - 为一系列 HTML 文本字段执行 JavaScript 函数

mysql - 我的项目必须使用什么技术

mysql - 从父级递归继承的属性

sql - SQL 第 2 部分中按中断系列升序/降序对结果最小值/最大值进行分组

PHP While 在另一个内部循环,并且第一个 while 不返回其他值

mysql - 非单调 SQL 查询(查找只喜欢某事的名字)

mysql - 自连接查找行位置

Mysql 查询选择特定时区的当前日期

java - 搜索数据库后,打印结果的整行

mysql - SQL 分组有序记录集