mysql 排除 插入 最大值

技术文档 - JS文档 作者: xcheng1986 发布于:2014-05-23 阅读(1715) (暂无评论)  

数据表中 from_id 和 link_id 做了关联唯一键 ,
需求是 从几张表中导入数据到该一张表 ,并且保证 refresh_time 取最大值 。

实现:
INSERT INTO `hr_resume_recheck_task_1` 

    (
         `id` , `resume_id` , `from_id` , `link_id` , `refresh_time` , 
         `is_checked` , `checked_status` , `checkid` , `add_time` 
    )

    VALUES (NULL , '1a2s3d4f', 1, 'jm123456', 333, 0, 0, 0, 0)

    ON DUPLICATE KEY UPDATE refresh_time = GREATEST(`refresh_time` ,333)

PHP程序只负责写数据 ,不负责比较大小 ;

当唯一键不重复时 后面的语句( ONDUPLICATEKEYUPDATErefresh_time = GREATEST(`refresh_time` ,333) ) 不会执行 ;

但是当唯一键重时 , 就会执行后面的更新操作 ,并且比较 旧的该条数据的refresh_time字段值,与新插入的数据值333做大小比较 ,取最大值。


这样就可以确保,每个唯一键的 refresh_time 字段为最大值。