guoyu/log/删除用户-userId大于200.sql
2025-12-12 16:01:11 +08:00

95 lines
2.1 KiB
SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

-- 1⃣ 先查看要删除的用户(确认范围)
SELECT user_id, user_name, nick_name, register_type, create_time
FROM sys_user
WHERE user_id > 200 AND del_flag = '0'
ORDER BY user_id;
-- 2⃣ 查看影响范围(统计)
SELECT
'用户数' AS ,
COUNT(*) AS
FROM sys_user
WHERE user_id > 200 AND del_flag = '0'
UNION ALL
SELECT
'学习记录数',
COUNT(*)
FROM learning_record
WHERE student_id > 200
UNION ALL
SELECT
'学习详情数',
COUNT(*)
FROM learning_detail
WHERE student_id > 200
UNION ALL
SELECT
'考试成绩数',
COUNT(*)
FROM score
WHERE student_id > 200
UNION ALL
SELECT
'班级关联数',
COUNT(*)
FROM student_class
WHERE student_id > 200;
-- ============================================================
-- ⚠️ 确认无误后,执行以下删除操作
-- ============================================================
-- 3⃣ 删除关联数据(按顺序)
-- 删除学习详情
DELETE FROM learning_detail
WHERE student_id > 200;
-- 删除学习记录
DELETE FROM learning_record
WHERE student_id > 200;
-- 删除考试成绩
DELETE FROM score
WHERE student_id > 200;
-- 删除班级关联
DELETE FROM student_class
WHERE student_id > 200;
-- 删除用户角色关联
DELETE FROM sys_user_role
WHERE user_id > 200;
-- 删除课程分配(如果用户是学生)
DELETE FROM course_assignment
WHERE student_id > 200;
-- 4⃣ 最后删除用户表记录
DELETE FROM sys_user
WHERE user_id > 200 AND del_flag = '0';
-- 5⃣ 验证删除结果
SELECT
'剩余用户数' AS ,
COUNT(*) AS
FROM sys_user
WHERE del_flag = '0';
-- ============================================================
-- 💡 如果想使用逻辑删除(推荐,可恢复),使用以下语句代替
-- ============================================================
/*
-- 逻辑删除用户(设置 del_flag = '2'
UPDATE sys_user
SET del_flag = '2',
update_time = NOW()
WHERE user_id > 200 AND del_flag = '0';
-- 验证逻辑删除
SELECT user_id, user_name, nick_name, del_flag
FROM sys_user
WHERE user_id > 200;
*/