提交
This commit is contained in:
1 parent
a0bb39d069
commit
6034b215e5
19 files changed
+1396
-10
No files matched your search
@@ -0,0 +1,126 @@
|
||||
-- =============================================================================
|
||||
-- 将入学年份为 2026 或年级为 2026 的学生「是否住校」统一改为「是」
|
||||
--
|
||||
-- 目标表字段:
|
||||
-- xg_student_msg.is_boarder 0-否,1-是
|
||||
-- xg_student_msg.enrollment_year / grade
|
||||
-- 同时兼容班级表 xg_class_msg.enrollment_year / grade(学生字段为空时以班级为准)
|
||||
--
|
||||
-- 用法:
|
||||
-- mysql -h <host> -u root -p hzdyjs_xg < docs/数据库脚本/2026-10-16-xg_student_msg-set-boarder-2026.sql
|
||||
--
|
||||
-- 建议:先执行「一、预览」确认影响范围,再执行「二、更新」
|
||||
-- =============================================================================
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 一、预览:命中范围与当前住校分布
|
||||
-- -----------------------------------------------------------------------------
|
||||
|
||||
SELECT '========== 1. 命中学生数量(含已是住校)==========' AS section;
|
||||
|
||||
SELECT COUNT(*) AS match_total
|
||||
FROM xg_student_msg s
|
||||
LEFT JOIN xg_class_msg c
|
||||
ON c.deleted = 0
|
||||
AND NULLIF(TRIM(s.class_id), '') IS NOT NULL
|
||||
AND c.id = CAST(NULLIF(TRIM(s.class_id), '') AS UNSIGNED)
|
||||
WHERE s.deleted = 0
|
||||
AND (
|
||||
s.enrollment_year = 2026
|
||||
OR s.grade = '2026'
|
||||
OR c.enrollment_year = 2026
|
||||
OR c.grade = '2026'
|
||||
);
|
||||
|
||||
SELECT '========== 2. 命中且尚未住校(将被更新)==========' AS section;
|
||||
|
||||
SELECT COUNT(*) AS need_update_count
|
||||
FROM xg_student_msg s
|
||||
LEFT JOIN xg_class_msg c
|
||||
ON c.deleted = 0
|
||||
AND NULLIF(TRIM(s.class_id), '') IS NOT NULL
|
||||
AND c.id = CAST(NULLIF(TRIM(s.class_id), '') AS UNSIGNED)
|
||||
WHERE s.deleted = 0
|
||||
AND IFNULL(s.is_boarder, 0) <> 1
|
||||
AND (
|
||||
s.enrollment_year = 2026
|
||||
OR s.grade = '2026'
|
||||
OR c.enrollment_year = 2026
|
||||
OR c.grade = '2026'
|
||||
);
|
||||
|
||||
SELECT '========== 3. 命中明细(抽样核对)==========' AS section;
|
||||
|
||||
SELECT
|
||||
s.id,
|
||||
s.student_no,
|
||||
s.name,
|
||||
s.enrollment_year AS student_enrollment_year,
|
||||
s.grade AS student_grade,
|
||||
c.enrollment_year AS class_enrollment_year,
|
||||
c.grade AS class_grade,
|
||||
s.is_boarder,
|
||||
s.class_name,
|
||||
s.college_name,
|
||||
s.student_status
|
||||
FROM xg_student_msg s
|
||||
LEFT JOIN xg_class_msg c
|
||||
ON c.deleted = 0
|
||||
AND NULLIF(TRIM(s.class_id), '') IS NOT NULL
|
||||
AND c.id = CAST(NULLIF(TRIM(s.class_id), '') AS UNSIGNED)
|
||||
WHERE s.deleted = 0
|
||||
AND (
|
||||
s.enrollment_year = 2026
|
||||
OR s.grade = '2026'
|
||||
OR c.enrollment_year = 2026
|
||||
OR c.grade = '2026'
|
||||
)
|
||||
ORDER BY s.enrollment_year, s.student_no
|
||||
LIMIT 200;
|
||||
|
||||
-- -----------------------------------------------------------------------------
|
||||
-- 二、更新:是否住校 -> 是(1)
|
||||
-- -----------------------------------------------------------------------------
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
UPDATE xg_student_msg s
|
||||
LEFT JOIN xg_class_msg c
|
||||
ON c.deleted = 0
|
||||
AND NULLIF(TRIM(s.class_id), '') IS NOT NULL
|
||||
AND c.id = CAST(NULLIF(TRIM(s.class_id), '') AS UNSIGNED)
|
||||
SET
|
||||
s.is_boarder = 1,
|
||||
s.update_time = NOW()
|
||||
WHERE s.deleted = 0
|
||||
AND IFNULL(s.is_boarder, 0) <> 1
|
||||
AND (
|
||||
s.enrollment_year = 2026
|
||||
OR s.grade = '2026'
|
||||
OR c.enrollment_year = 2026
|
||||
OR c.grade = '2026'
|
||||
);
|
||||
|
||||
-- 核对更新结果(事务内)
|
||||
SELECT ROW_COUNT() AS updated_rows;
|
||||
|
||||
SELECT COUNT(*) AS still_not_boarder
|
||||
FROM xg_student_msg s
|
||||
LEFT JOIN xg_class_msg c
|
||||
ON c.deleted = 0
|
||||
AND NULLIF(TRIM(s.class_id), '') IS NOT NULL
|
||||
AND c.id = CAST(NULLIF(TRIM(s.class_id), '') AS UNSIGNED)
|
||||
WHERE s.deleted = 0
|
||||
AND IFNULL(s.is_boarder, 0) <> 1
|
||||
AND (
|
||||
s.enrollment_year = 2026
|
||||
OR s.grade = '2026'
|
||||
OR c.enrollment_year = 2026
|
||||
OR c.grade = '2026'
|
||||
);
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- 可选:仅预览不更新时,把上面 TRANSACTION 整段注释掉,或改为 ROLLBACK
|
||||
Reference in new issue
Block a user