版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20086125/article/details/78760290
delimiter $$
# 删除 已有的 存储过程
DROP PROCEDURE IF EXISTS update_user_account_method;
# 创建新的存储过程
CREATE PROCEDURE update_user_account_method()
-- 批量更新HIK+手机号
BEGIN
# 批量更新sx_为xs_
UPDATE sys_user t
SET t.account = REPLACE (t.account,'sx_','xs_');
# 创建临时表
-- 不存在则创建临时表
create temporary table if not exists tmp(id bigint(20) primary key,ac varchar(20) not null) ;
-- 使用前先清空临时表
truncate table tmp;
# 查询HIK的账户数
SET @num=(SELECT COUNT(1) FROM sys_user WHERE account like concat('%','HIK','%'));
# HIK的账户数大于0则执行
if @num>0 then
insert into tmp(id,ac)
SELECT user_id,random_num
FROM (
SELECT user_id,concat('xs_',FLOOR(RAND()*50000000 + 50000000)) AS random_num
FROM sys_user WHERE account like concat('%','HIK','%')
) AS ss
WHERE random_num NOT IN (SELECT account FROM sys_user);
end if;
# 根据临时表更新表格对应的字段
UPDATE sys_user , tmp
SET sys_user.account = tmp.ac
WHERE sys_user.user_id = tmp.id;
# 使用后删除临时表
drop table tmp;
END $$
delimiter ;
# 执行存储过程
CALL update_user_account_method;
# 删除 已有的 存储过程
DROP PROCEDURE update_user_account_method;
# 删除 已有的 存储过程
DROP PROCEDURE IF EXISTS update_user_account_method;
# 创建新的存储过程
CREATE PROCEDURE update_user_account_method()
-- 批量更新HIK+手机号
BEGIN
# 批量更新sx_为xs_
UPDATE sys_user t
SET t.account = REPLACE (t.account,'sx_','xs_');
# 创建临时表
-- 不存在则创建临时表
create temporary table if not exists tmp(id bigint(20) primary key,ac varchar(20) not null) ;
-- 使用前先清空临时表
truncate table tmp;
# 查询HIK的账户数
SET @num=(SELECT COUNT(1) FROM sys_user WHERE account like concat('%','HIK','%'));
# HIK的账户数大于0则执行
if @num>0 then
insert into tmp(id,ac)
SELECT user_id,random_num
FROM (
SELECT user_id,concat('xs_',FLOOR(RAND()*50000000 + 50000000)) AS random_num
FROM sys_user WHERE account like concat('%','HIK','%')
) AS ss
WHERE random_num NOT IN (SELECT account FROM sys_user);
end if;
# 根据临时表更新表格对应的字段
UPDATE sys_user , tmp
SET sys_user.account = tmp.ac
WHERE sys_user.user_id = tmp.id;
# 使用后删除临时表
drop table tmp;
END $$
delimiter ;
# 执行存储过程
CALL update_user_account_method;
# 删除 已有的 存储过程
DROP PROCEDURE update_user_account_method;