xinli/清理已删除用户档案.sql

44 lines
1.5 KiB
MySQL
Raw Normal View History

2025-12-02 15:12:55 +08:00
-- ============================================
-- 清理已删除用户的档案数据
-- 用途:解决"信息编号已存在"但列表中看不到的问题
-- 日期2024-12-02
-- ============================================
-- 第一步:查看要删除的数据(确认)
SELECT
p.profile_id AS '档案ID',
p.info_number AS '信息编号',
p.user_id AS '关联用户ID',
u.user_name AS '用户账号',
u.del_flag AS '删除标记',
CASE
WHEN u.user_id IS NULL THEN '用户不存在'
WHEN u.del_flag = '2' THEN '用户已删除'
ELSE '正常'
END AS '状态',
p.create_time AS '创建时间'
FROM psy_user_profile p
LEFT JOIN sys_user u ON p.user_id = u.user_id
WHERE u.del_flag = '2' OR u.user_id IS NULL
ORDER BY CAST(p.info_number AS UNSIGNED);
-- 第二步:备份要删除的数据(可选但推荐)
CREATE TABLE IF NOT EXISTS psy_user_profile_deleted_backup_20241202 AS
SELECT p.*
FROM psy_user_profile p
LEFT JOIN sys_user u ON p.user_id = u.user_id
WHERE u.del_flag = '2' OR u.user_id IS NULL;
-- 第三步:删除已删除用户的档案
DELETE p FROM psy_user_profile p
LEFT JOIN sys_user u ON p.user_id = u.user_id
WHERE u.del_flag = '2' OR u.user_id IS NULL;
-- 查看删除结果
SELECT CONCAT('已删除 ', ROW_COUNT(), ' 条档案数据') AS '执行结果';
-- ============================================
-- 如果只想删除特定信息编号的档案如114
-- ============================================
-- DELETE FROM psy_user_profile WHERE info_number = '114';