71 lines
2.2 KiB
SQL
71 lines
2.2 KiB
SQL
-- ========================================
|
||
-- 修正学生角色分配
|
||
-- ========================================
|
||
-- 问题:71个学生有班级但没有"学员"角色
|
||
-- 影响:统计学生数时不准确
|
||
-- 解决:给所有有班级的学生添加"学员"角色
|
||
-- ========================================
|
||
|
||
-- 第1步:查询学员角色ID
|
||
SELECT role_id, role_name, role_key
|
||
FROM sys_role
|
||
WHERE role_name LIKE '%学员%' OR role_key LIKE '%student%';
|
||
|
||
-- 假设学员角色ID为4(请根据实际情况修改)
|
||
SET @student_role_id = 4;
|
||
|
||
-- 第2步:查询需要添加角色的学生
|
||
SELECT
|
||
u.user_id,
|
||
u.user_name,
|
||
u.nick_name,
|
||
'需要添加学员角色' as action
|
||
FROM sys_user u
|
||
INNER JOIN student_class sc ON u.user_id = sc.student_id
|
||
LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id AND ur.role_id = @student_role_id
|
||
WHERE ur.user_id IS NULL
|
||
LIMIT 10;
|
||
|
||
-- 统计数量
|
||
SELECT COUNT(DISTINCT u.user_id) as need_role_count
|
||
FROM sys_user u
|
||
INNER JOIN student_class sc ON u.user_id = sc.student_id
|
||
LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id AND ur.role_id = @student_role_id
|
||
WHERE ur.user_id IS NULL;
|
||
|
||
-- 第3步:批量添加学员角色
|
||
INSERT INTO sys_user_role (user_id, role_id)
|
||
SELECT DISTINCT
|
||
u.user_id,
|
||
@student_role_id
|
||
FROM sys_user u
|
||
INNER JOIN student_class sc ON u.user_id = sc.student_id
|
||
LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id AND ur.role_id = @student_role_id
|
||
WHERE ur.user_id IS NULL;
|
||
|
||
-- 第4步:验证结果
|
||
SELECT
|
||
'有班级的学生' as type,
|
||
COUNT(DISTINCT student_id) as count
|
||
FROM student_class
|
||
UNION ALL
|
||
SELECT
|
||
'有学员角色的用户' as type,
|
||
COUNT(DISTINCT u.user_id) as count
|
||
FROM sys_user u
|
||
INNER JOIN sys_user_role ur ON u.user_id = ur.user_id
|
||
INNER JOIN sys_role r ON ur.role_id = r.role_id
|
||
WHERE r.role_name LIKE '%学员%';
|
||
|
||
-- 应该显示两个数字一致(都是278)
|
||
|
||
-- ========================================
|
||
-- 使用说明
|
||
-- ========================================
|
||
-- 1. 先查询学员角色ID(第1步)
|
||
-- 2. 修改@student_role_id为实际ID
|
||
-- 3. 查询需要添加角色的学生(第2步,确认)
|
||
-- 4. 执行批量添加(第3步)
|
||
-- 5. 验证结果(第4步)
|
||
-- ========================================
|