【洞库】唯一键

需求
 我从温湿度基表中统计出温湿度年度汇总数据,然后为温湿度年度汇总数据单独创建一个表,将统计出的数据存储到这个表中。

 温湿度年度汇总表中的每条数据都是基于time(时间)和userCave(洞库)字段的,也就是说,每个库房每年每月只能有一条数据。即唯一键是由time和userCave字段确定的。

 温湿度年度汇总表的数据将在每次统计温湿度基表数据时添加,在添加时,如果温湿度年度汇总表中已有该库房该年月的数据,那么就更新它,如果,没有该库房该年月的数据,则新增一条数据。这个过程使用一个SQL语句来完成,这需要使用到索引,解决过程如下:

为数据库添加唯一性约束

ALTER TABLE humitureall 
ADD UNIQUE INDEX time_userCave_unique (time, userCave);

根据唯一键进行upsert操作

<insert id="updateAndAdd" parameterType="your.package.name.Humitureall">
    INSERT INTO humitureall 
    (time, user_cave, avg_temperature, hot_days, cold_days, avg_humidity, wet_days, dry_days)
    VALUES (#{time}, #{userCave}, #{avgTemperature}, #{hotDays}, #{coldDays}, #{avgHumidity}, #{wetDays}, #{dryDays})
    ON DUPLICATE KEY UPDATE
    avg_temperature = VALUES(avg_temperature),
    hot_days = VALUES(hot_days),
    cold_days = VALUES(cold_days),
    avg_humidity = VALUES(avg_humidity),
    wet_days = VALUES(wet_days),
    dry_days = VALUES(dry_days)
</insert>
posted @ 2023-08-29 15:13  钱有学  阅读(12)  评论(0)    收藏  举报