我有一个简单的表格如下.
CREATE TABLE `stats` (
`id` int(11) NOT NULL auto_increment,
`zones` varchar(100) default NULL,
`date` date default NULL,
`hits` int(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
因此,每个区域每天只需存储简单的点击计数器.
但我只想在同一天增加命中数值.
我已经尝试了MYSQL DUPLICATE KEY UPDATE但是这不会起作用,因为我可能在不同的日期有很多区域,所以我不能让它们独特或日期.
所以我能想到的唯一方法是首先查询是否存在日期,然后对插入/更新执行简单的if()
他们是一个更好的方式来完成这样的任务,因为每天可能会有很多1000次点击.
希望这是有道理的:-).
如果你能提出建议,谢谢.
(zone, date)在CREATE语句中将元组声明为唯一.这将使INSERT ... ON DUPLICATE UPDATE按预期工作:
CREATE TABLE `stats` (
`id` int(11) NOT NULL auto_increment,
`zone` varchar(100) default NULL,
`date` date default NULL,
`hits` int(100) default NULL,
PRIMARY KEY (`id`),
UNIQUE (`zone`, `date`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
INSERT INTO stats (zone, date, hits) values ('zone1', 'date1', 1) ON DUPLICATE KEY UPDATE hits = hits + 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2614 次 |
| 最近记录: |