健康师业绩jks字段历史脏数据修复-预览与可选执行.sql 1.79 KB
-- 健康师业绩 jks 字段历史脏数据修复(可选,先预览再执行)
-- 背景:部分行 jks 存姓名、jkszh 存账号/用户ID;读侧已用 jkszh 兼容,本脚本用于回填 jks 与 jkszh 一致。
-- 执行前请先跑「预览」段,确认影响行数;建议在业务低峰、可回滚环境下执行。

-- ========== 1. 预览:各表 jks 为姓名但 jkszh 为账号的行数 ==========
SELECT 'lq_xh_jksyj' AS tbl, COUNT(*) AS cnt
FROM lq_xh_jksyj
WHERE F_IsEffective = 1
  AND jkszh IS NOT NULL AND jkszh <> ''
  AND jks IS NOT NULL AND jks <> ''
  AND jks <> jkszh
  AND jks NOT REGEXP '^[0-9]+$';

SELECT 'lq_kd_jksyj' AS tbl, COUNT(*) AS cnt
FROM lq_kd_jksyj
WHERE F_IsEffective = 1
  AND jkszh IS NOT NULL AND jkszh <> ''
  AND jks IS NOT NULL AND jks <> ''
  AND jks <> jkszh
  AND jks NOT REGEXP '^[0-9]+$';

SELECT 'lq_hytk_jksyj' AS tbl, COUNT(*) AS cnt
FROM lq_hytk_jksyj
WHERE F_IsEffective = 1
  AND jkszh IS NOT NULL AND jkszh <> ''
  AND jks IS NOT NULL AND jks <> ''
  AND jks <> jkszh
  AND jks NOT REGEXP '^[0-9]+$';

-- ========== 2. 可选执行(取消注释后手动执行,勿自动化跑) ==========
-- START TRANSACTION;
--
-- UPDATE lq_xh_jksyj
-- SET jks = jkszh
-- WHERE F_IsEffective = 1
--   AND jkszh IS NOT NULL AND jkszh <> ''
--   AND jks IS NOT NULL AND jks <> ''
--   AND jks <> jkszh
--   AND jks NOT REGEXP '^[0-9]+$';
--
-- UPDATE lq_kd_jksyj
-- SET jks = jkszh
-- WHERE F_IsEffective = 1
--   AND jkszh IS NOT NULL AND jkszh <> ''
--   AND jks IS NOT NULL AND jks <> ''
--   AND jks <> jkszh
--   AND jks NOT REGEXP '^[0-9]+$';
--
-- UPDATE lq_hytk_jksyj
-- SET jks = jkszh
-- WHERE F_IsEffective = 1
--   AND jkszh IS NOT NULL AND jkszh <> ''
--   AND jks IS NOT NULL AND jks <> ''
--   AND jks <> jkszh
--   AND jks NOT REGEXP '^[0-9]+$';
--
-- COMMIT;