69 lines
2.5 KiB
SQL
69 lines
2.5 KiB
SQL
-- =====================================================
|
||
-- 删除信息编号大于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;
|