需要根据某个时间点来统计数量,例如统计每天网站的访问量,本人以前的做法是先查询当前有没有记录,如果存在就更新访问量的值,否则就插入一条。其实在Mysql中可以一条SQL语句来搞定,只要使用ON DUPLICATE KEY UPDATE即可。例如: 如果insert 末尾指定了on duplicate key update,插入数据会导致一个primary key或unique索引出现重复,那么就对已经存在的行执行update操作,条件就是primary key或unique索引。 对于一次插入一条记录没有问题,如果一次插入多条记录,其中某些可能会造成primary key或unique索引重复,那该如何处理呢。其实和单条处理类似,只要在后面使用values函数即可,例如: 上述 “cnt = cnt + values(cnt)”中第一个是cnt指更新的字段,第二个指原来的值,第三个是上面insert对应行中指定的cnt的值,例如2012-11-24记录已经存在,cnt的原始值为5,那么执行上述sql后,2012-11-24的cnt就为8 ( 3 + 5)。 另外需要注意的是 ON DUPLICATE KEY UPDATE 是Mysql特有的,不是标准的SQL语法。 (责任编辑:IT) |