-- ALTER TABLE t_base_person CONVERT TO CHARACTER SET gbk COLLATE gbk_chinese_ci;

数据清洗分两种情况 
(1)、校验上报的数据字段，是不是在范围内，校验即可，不扩展其它字段
比如：用户上报了一条学生作业得分数据，但学生的ID，不在学生表的ID范围内

(2)、校验上报的数据字段，是不是在范围内，除校验外，需要扩展其它字段
比如：用户上报了一条学生作业得分数据，需要在检查zy_id是否合法的前提下，扩展出zy_name字段


-- 下面分别进行讨论：

-- 增加 check_flag字段
-- ALTER TABLE `huanghai`.`t_zy_score` ADD COLUMN `check_flag` smallint NOT NULL DEFAULT 0 COMMENT '0：待校验，1：校验成功，-1：校验失败';

-- 添加check_flag字段索引
-- ALTER TABLE `huanghai`.`t_zy_score` ADD INDEX(`check_flag`);

-- 还原现场
update t_zy_score set check_flag=0,zy_name=null;

-- 第一种情况对不上的修改为-1
update t_zy_score as t1 left join t_base_person as t2  on t1.person_id=t2.person_id set t1.check_flag=-1 where t2.person_id is  null limit 100;

-- 第二种情况对不上的，保留扩展字段为空
update t_zy_score as t1 left join t_zy_main as t2  on t1.zy_id=t2.zy_id set t1.zy_name=t2.zy_name where t1.zy_name is  null limit 100;
update t_zy_score as t1 set t1.check_flag=-1 where t1.zy_name is null limit 100;

-- 最终修改正确标识
update t_zy_score as t1 set check_flag=1 where check_flag=0 limit 100;

select * from t_zy_score