需求:数据库表(向每日可保养箱列表的作业日期插入时间,时间是从excel中获得,excel中有不同箱号的多个日期,取最新的日期即可)
1.在数据库中新建一张临时表(t_ls_maintain_list),包括的字段(guid、box_no、work_time),其中work_time的数据类型是varchar。
2.调整excel中不规范的日期(比如2020.3.2),用/全局替换.,可以得到类似于2020/3/2这样的日期格式。
3.在excel中新建一行,把数据库表中对应的字段写入
4.将excel表格导入到当前数据库表中
5.生成对应的guid
update t_ls_maintain_list set guid = uuid()
6.由于一个箱号可能对应多个保养时间,所以需要去重取日期最新的那个记录
SELECT * FROM t_ls_maintain_list ls WHERE ls.work_time = (SELECT max(work_time) FROM t_ls_maintain_list WHERE ls.box_no = box_no) ORDER BY ls.box_no
ps:这里要注意一个日期格式问题,如果日期格式是2020/3/2这种的,在取最新日期的时候需要改成2020/03/02这种,不然有可能取不到最新的日期
7.将当前去完重的数据导出到excel
8.将当前t_ls_maintain_list中的数据全部删除
delete from t_ls_maintain_list
9.再将导出的去了重的excel数据重新导入到t_ls_maintain_list表中
10.同库不同表之间的更新操作
UPDATE t_zy_maintain_day_list
INNER JOIN t_ls_maintain_list ON t_ls_maintain_list.box_no = t_zy_maintain_day_list.box_no
SET t_zy_maintain_day_list.work_time = t_ls_maintain_list.work_time
这样t_zy_maintain_day_list表中的作业时间就能拿到excel中的最新日期值了
容易出错的地方:excel转csv的时候会导致箱号是0开头的直接省略了0,比如箱号是0010的,转成csv之后,箱号就变成了10,这个不利于后面更新操作的时候箱号一一对应匹配,所以就直接用excel导入数据库即可