xinli/sql/删除信息编号大于100的用户及相关数据.sql
xiao12feng e7c1563f15 完成
2025-12-14 15:34:28 +08:00

69 lines
2.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- =====================================================
-- 删除信息编号大于100的用户及其所有相关数据
-- 同时清空所有测评记录和报告
-- 执行前请先备份数据库!
-- =====================================================
-- ==================== 第一部分:清空所有测评数据 ====================
-- 1. 删除所有预警记录(关联测评的)
DELETE FROM psy_warning WHERE assessment_id IS NOT NULL;
-- 2. 删除所有测评报告
DELETE FROM psy_assessment_report;
-- 3. 删除所有测评答案
DELETE FROM psy_assessment_answer;
-- 4. 删除所有测评记录
DELETE FROM psy_assessment;
-- 5. 删除所有问卷答案详情
DELETE FROM psy_questionnaire_answer_detail;
-- 6. 删除所有问卷答题记录
DELETE FROM psy_questionnaire_answer;
-- ==================== 第二部分:删除信息编号>100的用户 ====================
-- 7. 预览要删除的用户档案
SELECT p.profile_id, p.user_id, u.nick_name AS user_name, p.info_number
FROM psy_user_profile p
LEFT JOIN sys_user u ON p.user_id = u.user_id
WHERE CAST(p.info_number AS UNSIGNED) > 100;
-- 8. 删除预警记录通过user_id关联
DELETE FROM psy_warning WHERE user_id IN (
SELECT user_id FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100 AND user_id IS NOT NULL
);
-- 9. 删除量表权限
DELETE FROM psy_scale_permission WHERE user_id IN (
SELECT user_id FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100 AND user_id IS NOT NULL
);
-- 10. 删除用户角色关联
DELETE FROM sys_user_role WHERE user_id IN (
SELECT user_id FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100 AND user_id IS NOT NULL
);
-- 11. 删除用户岗位关联
DELETE FROM sys_user_post WHERE user_id IN (
SELECT user_id FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100 AND user_id IS NOT NULL
);
-- 12. 删除系统用户
DELETE FROM sys_user WHERE user_id IN (
SELECT user_id FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100 AND user_id IS NOT NULL
);
-- 13. 删除用户档案
DELETE FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100;
-- ==================== 第三部分:验证结果 ====================
SELECT COUNT(*) AS remaining_profiles FROM psy_user_profile WHERE CAST(info_number AS UNSIGNED) > 100;
SELECT COUNT(*) AS total_profiles FROM psy_user_profile;
SELECT COUNT(*) AS total_assessments FROM psy_assessment;
SELECT COUNT(*) AS total_reports FROM psy_assessment_report;