MySQL数据库 存储过程

需求背景是这样的 有三张表 a表 c表 b表 上传文件解析插入到a表 然后 a表数据和b表数据做对比 看是否有重复数据 有重复数据 修改a表状态 然后 把重复数据插入到c表 没有重复的插入到b表 三张表数据结构一样
百万级数据 求帮忙写一个存储过程的demo 可以参考借鉴一下


CREATEPROCEDURE handleFilePath ( IN filepath varchar )
BEGIN
    insert into a表 set `文件路径`=filepath;
    DECLARE bFilepath Varchar(20);
    SELECT filepath INTO bFilepath from b表 where `文件路径`=filepath;
    IF  bFilepath != ''  THEN
        update a表 set '字段'='更新状态'
        insert into c表 set `文件路径`=filepath;
    ELSEIF  bFilepath == ''  THEN
        insert into b表 set `文件路径`=filepath;
    END IF
END;

有更加详细点的需求吗?或者简单的Demo数据。

create procedure user_data()
begin
    declare v_id int default 0;
    declare v_name varchar(30);
    declare u_count int default 0;
    declare done int default 0;
    declare cur cursor for select id, user_name from app_user;
    declare exit handler for not found set done = 1;
    
    open cur;    
    while done = 0 do 
        fetch cur into v_id, v_name;
            select count(*) into u_count from app_user_stu t where t.user_name = v_name;
            if u_count > 0 then 
                update app_user set user_status = 10 where id = v_id;
                insert into app_user_tea(user_name, is_disabled) select user_name, is_disabled from app_user where id = v_id;
            else 
                insert into app_user_stu(user_name, is_disabled) select user_name, is_disabled from app_user where id = v_id;
            end if;    
    end while;    
end

随便写个例子给你,优化部分你自己来吧

按照无法写即可

这个需求一定要用mysql存储过程实现么,用python脚本实现会很简单,定时运行python脚本

重复数据是什么概念,指定列相同就算重复还是多列都相同才算重复?
我理了一下思路,你这三张表相当于a是所有数据的全集,b是a的一个不重复的子集,而c是a-b的差集,是这样吧,那么其实不需要比较a和b,因为b中存在a中肯定存在,b中不存在a也肯定不存在,所以新数据来了只需要查询a里边是否有相同数据,插入并修改的同时,已存在就插入c,不存在就插入b,不知道这么理解对不对

其实搞清楚要做的事情和步骤就好做了,你需要通过触发器来实现数据的归类,然后通过存储过程查询数据

这需求,太笼统了,而且这个需求很奇怪,数据库里有的数据需要导入吗?

其实可以将这个存储过程写成一个脚本,可以是ddl,bat,sh,java,python等,定时任务的话可以在window或者linux上面进行建立