# 宝应博森元 miao80 用户数据清理方案 ## 基本信息 - 公司:宝应博森元 - Spring profile:`miao80` - MySQL:`123.56.214.80:3306` - 数据库:`yangtangyoupin` - 任务日期:2026-06-04 - 方案目的:删除指定会员及其寄卖、订单、奖金、积分、地址、提现等关联数据。 ## 数据来源 1. Excel 清除名单:`/Users/mac/Works26/miao-july/bosenyuan清除名单260604.xlsx` 2. 手工补充名单:此前核查出的 30 个有隐藏未售寄卖商品的会员。 ## 清理范围 ### Excel 清除名单 | 用户ID | 昵称 | 联系方式 | 上级ID | | --- | --- | --- | --- | | 93320 | 崔龙云 | 18921916448 | 93315 | | 93317 | 杨长霞 | 13852763959 | 93212 | | 93312 | 成成 | 13905238633 | 93296 | | 93311 | 袁月 | 18932311595 | 93303 | | 93310 | 范明中 | 18915115858 | 93303 | | 93308 | 138****0239 | 13813100239 | 93248 | | 93304 | 卢红 | 13905235316 | 93303 | | 93302 | 周顺芹 | 13511707356 | 93250 | | 93298 | 顾善道 | 15005253578 | 93120 | | 93293 | 朱梅芳 | 13801441506 | 93136 | | 93292 | 蔡宛序 | 17625471367 | 93213 | | 93291 | 130****3522 | 13092023522 | 93254 | | 93288 | 于桂平 | 13305239833 | 93249 | | 93286 | 陆哓明 | 13952753228 | 93250 | | 93285 | 仲妮妮 | 17351389708 | 93212 | | 93282 | 张伏顺 | 13016592366 | 93254 | | 93281 | 189****9338 | 18951269338 | 93213 | | 93280 | 韩国林 | 15861304478 | 93248 | | 93278 | 陈文青 | 15062891641 | 92775 | | 93277 | 许良会 | 18260691419 | 93239 | | 93275 | 黄丽辉 | 15262265025 | 93147 | | 93269 | 吴发 | 18360337533 | 92687 | | 93268 | 马猛宏 | 13921912348 | 93250 | | 93267 | 卢玉凤 | 17558780051 | 93212 | | 93266 | 周同 | 13115254379 | 93265 | | 93265 | 王彬 | 18915131699 | 93254 | | 93263 | 陈斌 | 18012324636 | 93019 | | 93262 | 徐猫猫 | 13390629258 | 93161 | | 93261 | 潘年庆 | 13773341597 | 93251 | | 93260 | 纪开东 | 13179766726 | 93251 | | 93256 | 卢玉芬 | 18012323088 | 93161 | | 93253 | 刘加良 | 15298672227 | 93239 | | 93252 | 夏宝华 | 15262250561 | 93214 | | 93241 | 孙万万 | 13951441675 | 93214 | | 93238 | 戴向英 | 15189893800 | 93136 | | 93233 | 严登文 | 15995116338 | 93214 | | 93228 | 苗永粉 | 13773321176 | 92688 | | 93217 | 邹华 | 18796681777 | 93206 | | 93200 | 戴增中 | 13813104768 | 93193 | | 93194 | 姚焕桂 | 13773330344 | 93075 | | 93190 | 姜红爱 | 17715862910 | 93075 | | 93160 | 季安红 | 13913432863 | 93107 | | 93153 | 王祥 | 15380316138 | 92973 | | 93143 | 郑娟 | 17751330452 | 93075 | | 93142 | 李德荣 | 13813104919 | 93109 | ### 手工补充名单 | 用户ID | 昵称 | 联系方式 | 待清理未售商品数 | | --- | --- | --- | --- | | 92801 | 成宏梅 | 18751483086 | 3 | | 93011 | 李迎春 | 13505270568 | 3 | | 93032 | 沈宝军 | 13348149448 | 2 | | 93073 | 陈海霞 | 15152714200 | 1 | | 93078 | 顾晓燕 | 13151600166 | 1 | | 93120 | 于秀梅 | 13348140510 | 1 | | 93136 | 戴玉山 | 13813100018 | 1 | | 93147 | 陈小燕 | 18066016798 | 1 | | 93155 | 王锐 | 18952581561 | 1 | | 93185 | 王学梅 | 15150886020 | 1 | | 93193 | 相荣 | 18796692299 | 1 | | 93216 | 张萍 | 18252750442 | 1 | | 93218 | 李润芝 | 15050708588 | 1 | | 93248 | 董鲜 | 19533096227 | 1 | | 93284 | 仇云 | 17317753117 | 1 | | 93287 | 王珏 | 19741771099 | 1 | | 93290 | 段玉香 | 17751370387 | 1 | | 93295 | 季爱玲 | 18932366911 | 1 | | 93297 | 蔡先生 | 13952533248 | 1 | | 93301 | 毛天梅 | 18012327099 | 1 | | 93305 | 王素琴 | 13092025465 | 1 | | 93306 | 殷先生 | 15262252218 | 1 | | 93307 | 董先生 | 15252737658 | 1 | | 93315 | 朱继英 | 15800764854 | 1 | | 93318 | 王琴 | 15150881748 | 1 | | 93321 | 爱之香 | 15951439818 | 1 | | 93322 | 邓学美 | 13505254585 | 1 | | 93323 | 梁鹤贵 | 15050701288 | 1 | | 93325 | 李杰 | 15050708139 | 1 | | 93327 | 刘正娟 | 15062896288 | 1 | ### 合并后用户ID - Excel:45 人 - 手工补充:30 人 - 重叠:0 人 - 合并后:75 人 ```sql SET @cleanup_user_ids = '92801,93011,93032,93073,93078,93120,93136,93142,93143,93147,93153,93155,93160,93185,93190,93193,93194,93200,93216,93217,93218,93228,93233,93238,93241,93248,93252,93253,93256,93260,93261,93262,93263,93265,93266,93267,93268,93269,93275,93277,93278,93280,93281,93282,93284,93285,93286,93287,93288,93290,93291,93292,93293,93295,93297,93298,93301,93302,93304,93305,93306,93307,93308,93310,93311,93312,93315,93317,93318,93320,93321,93322,93323,93325,93327'; ``` 实际执行建议使用临时表承载 ID: ```sql DROP TEMPORARY TABLE IF EXISTS tmp_bosenyuan_cleanup_users; CREATE TEMPORARY TABLE tmp_bosenyuan_cleanup_users ( id INT PRIMARY KEY ); INSERT INTO tmp_bosenyuan_cleanup_users (id) VALUES (92801),(93011),(93032),(93073),(93078),(93120),(93136),(93142),(93143),(93147), (93153),(93155),(93160),(93185),(93190),(93193),(93194),(93200),(93216),(93217), (93218),(93228),(93233),(93238),(93241),(93248),(93252),(93253),(93256),(93260), (93261),(93262),(93263),(93265),(93266),(93267),(93268),(93269),(93275),(93277), (93278),(93280),(93281),(93282),(93284),(93285),(93286),(93287),(93288),(93290), (93291),(93292),(93293),(93295),(93297),(93298),(93301),(93302),(93304),(93305), (93306),(93307),(93308),(93310),(93311),(93312),(93315),(93317),(93318),(93320), (93321),(93322),(93323),(93325),(93327); ``` ## 当前库只读统计 统计时间:2026-06-04,库:`miao80 / yangtangyoupin`。 | 表 / 范围 | 命中行数 | | --- | ---: | | `wa_users` | 75 | | `eb_user` | 74 | | `wa_merchandise` | 1698 | | `wa_order` seller 或 buyer 命中 | 2609 | | `wa_selfbonus_log` | 1627 | | `wa_sharebonus_log` | 1545 | | `wa_coupon_log` | 198 | | `wa_withdraw` | 44 | | `wa_money_log` | 0 | | `wa_address` | 80 | | `wa_alipay` | 65 | | `wa_bank` | 1 | | `eb_user_integral_record` | 1666 | | `eb_user_address` | 73 | | `eb_user_bill` | 47 | | `eb_user_brokerage_record` | 0 | | `eb_user_experience_record` | 47 | | `eb_user_extract` | 0 | | `eb_user_level` | 0 | | `eb_user_recharge` | 0 | | `eb_user_sign` | 0 | | `eb_user_token` | 0 | | `eb_user_visit_record` | 12 | | `eb_store_cart` | 0 | | `eb_store_coupon_user` | 0 | | `eb_store_order` | 47 | | `eb_sms_record` | 0 | ## 特殊检查 ### `wa_users` 与 `eb_user` 不一致 `wa_users` 命中 75 人,`eb_user` 命中 74 人。缺失的 `eb_user`: | 用户ID | 昵称 | 联系方式 | | --- | --- | --- | | 93305 | 王素琴 | 13092025465 | ### 删除名单外仍指向待删用户的推荐关系 删除前需要决定是否置空为 `0`,或改挂到指定上级。 `wa_users.pid` 外部引用 1 条: | 用户ID | 昵称 | 联系方式 | 当前上级ID | | --- | --- | --- | --- | | 93036 | 赵玉文 | 18091856709 | 92801 | `eb_user.spread_uid` 外部引用 14 条: | uid | account | nickname | phone | spread_uid | | --- | --- | --- | --- | --- | | 92881 | 18115115512 | 成明强 | 18115115512 | 92801 | | 92903 | 18036263863 | 徐丹 | 18036263863 | 92801 | | 92940 | 13773342930 | 朱友华 | 13773342930 | 92801 | | 92976 | 13773334985 | 何军健 | 13773334985 | 92801 | | 92983 | 15052568923 | 柴秉丹 | 15052568923 | 92801 | | 93009 | 13092025465 | 王素琴 | 13092025465 | 92801 | | 93030 | 15298470085 | 张琴 | 15298470085 | 93011 | | 93036 | 18091856709 | 赵玉文 | 18091856709 | 92801 | | 93094 | 15952533800 | 朱鹤峰 | 15952533800 | 92801 | | 93105 | 18626221249 | 姚春峰 | 18626221249 | 93078 | | 93133 | 19352900319 | 193****0319 | 19352900319 | 93011 | | 93138 | 18952533228 | 189****3228 | 18952533228 | 93011 | | 93146 | 15252502175 | 艾保兄 | 15252502175 | 93011 | | 93148 | 13601446282 | 许梅 | 13601446282 | 93011 | 建议处理方式: ```sql UPDATE wa_users SET pid = 0 WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users); UPDATE eb_user SET spread_uid = 0, spread_time = NULL WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users); ``` 如业务要求保留推荐关系,需要先确认新的承接上级 ID,再把上面 SQL 的 `0` 替换为指定 ID。 ## 执行前校验 SQL ```sql SELECT 'wa_users', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_merchandise', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_order_seller_or_buyer', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_selfbonus_log', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_sharebonus_log', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_coupon_log', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_withdraw', COUNT(*) FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_address', COUNT(*) FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_alipay', COUNT(*) FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_bank', COUNT(*) FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_integral_record', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_address', COUNT(*) FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_bill', COUNT(*) FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_experience_record', COUNT(*) FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_visit_record', COUNT(*) FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_store_order', COUNT(*) FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); ``` ## 备份方案 执行删除前,先在同库创建带日期后缀的备份表。备份表名建议固定使用本次任务时间戳:`20260604`。 ```sql CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_users AS SELECT * FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user AS SELECT * FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_merchandise AS SELECT * FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_order AS SELECT * FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_selfbonus_log AS SELECT * FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_sharebonus_log AS SELECT * FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_coupon_log AS SELECT * FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_withdraw AS SELECT * FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_address AS SELECT * FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_alipay AS SELECT * FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_wa_bank AS SELECT * FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_integral_record AS SELECT * FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_address AS SELECT * FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_bill AS SELECT * FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_experience_record AS SELECT * FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_user_visit_record AS SELECT * FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); CREATE TABLE IF NOT EXISTS bak_20260604_bsy_eb_store_order AS SELECT * FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); ``` ## 删除执行方案 建议用事务执行;执行前确认业务低峰,并暂停相关同步任务或后台定时任务。 ```sql START TRANSACTION; -- 1. 先解除删除名单外用户对待删用户的推荐引用 UPDATE wa_users SET pid = 0 WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) AND id NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users); UPDATE eb_user SET spread_uid = 0, spread_time = NULL WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) AND uid NOT IN (SELECT id FROM tmp_bosenyuan_cleanup_users); -- 2. 删除寄卖业务关联数据 DELETE FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_withdraw WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_money_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_address WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_alipay WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_bank WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); -- 3. 删除积分商城用户关联数据 DELETE FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_address WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_bill WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_brokerage_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_experience_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_extract WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_level WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_recharge WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_sign WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_token WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_user_visit_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_store_cart WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_store_coupon_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_store_order WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM eb_sms_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); -- 4. 最后删除用户主表 DELETE FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); DELETE FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); -- 5. 事务内复核,确认结果符合预期后再提交 SELECT 'wa_users_remaining', COUNT(*) FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_remaining', COUNT(*) FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_merchandise_remaining', COUNT(*) FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_order_remaining', COUNT(*) FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_selfbonus_log_remaining', COUNT(*) FROM wa_selfbonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_sharebonus_log_remaining', COUNT(*) FROM wa_sharebonus_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'wa_coupon_log_remaining', COUNT(*) FROM wa_coupon_log WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'eb_user_integral_record_remaining', COUNT(*) FROM eb_user_integral_record WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'external_wa_pid_refs_remaining', COUNT(*) FROM wa_users WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users) UNION ALL SELECT 'external_eb_spread_refs_remaining', COUNT(*) FROM eb_user WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); -- 确认无误后: COMMIT; -- 如结果异常: -- ROLLBACK; ``` ## 执行后复核 ```sql SELECT COUNT(*) AS wa_users_remaining FROM wa_users WHERE id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); SELECT COUNT(*) AS eb_user_remaining FROM eb_user WHERE uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); SELECT COUNT(*) AS merchandise_remaining FROM wa_merchandise WHERE user_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); SELECT COUNT(*) AS order_remaining FROM wa_order WHERE seller_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users) OR buyer_id IN (SELECT id FROM tmp_bosenyuan_cleanup_users); SELECT COUNT(*) AS wa_pid_refs_remaining FROM wa_users WHERE pid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); SELECT COUNT(*) AS eb_spread_refs_remaining FROM eb_user WHERE spread_uid IN (SELECT id FROM tmp_bosenyuan_cleanup_users); ``` ## 回滚思路 如果已经 `COMMIT`,只能通过备份表恢复。恢复时应优先恢复用户主表,再恢复关联表: 1. `wa_users` 2. `eb_user` 3. `wa_*` 业务表 4. `eb_user_*` / `eb_store_*` 关联表 示例: ```sql INSERT INTO wa_users SELECT * FROM bak_20260604_bsy_wa_users; INSERT INTO eb_user SELECT * FROM bak_20260604_bsy_eb_user; ``` 恢复前需要先确认目标主键是否已经被重新占用。 ## 注意事项 - 本文档仅为清理方案,尚未执行删除。 - `wa_merchandise` 中手工补充名单此前核查到的 35 条未售商品均为隐藏状态:`status = 1`、`is_show = 0`。 - `wa_order` 删除条件必须同时覆盖 `seller_id` 和 `buyer_id`。 - 删除主表前必须先处理名单外用户对待删用户的 `pid` / `spread_uid` 引用。 - 执行完成后,如系统使用 Redis 缓存用户、配置或统计数据,需要按线上运维流程清理相关缓存或重启服务。 ## 执行结果 - 执行时间:2026-06-04 - 执行库:`miao80 / yangtangyoupin` - 清理 ID 表:`bak_20260604_bsy_cleanup_users` - 清理用户数:75 - 状态:已执行并 `COMMIT` ### 备份表实际行数 | 备份表 | 行数 | | --- | ---: | | `bak_20260604_bsy_cleanup_users` | 75 | | `bak_20260604_bsy_wa_users` | 75 | | `bak_20260604_bsy_eb_user` | 74 | | `bak_20260604_bsy_wa_merchandise` | 1698 | | `bak_20260604_bsy_wa_order` | 2609 | | `bak_20260604_bsy_wa_selfbonus_log` | 1627 | | `bak_20260604_bsy_wa_sharebonus_log` | 1545 | | `bak_20260604_bsy_wa_coupon_log` | 198 | | `bak_20260604_bsy_wa_withdraw` | 44 | | `bak_20260604_bsy_wa_address` | 80 | | `bak_20260604_bsy_wa_alipay` | 65 | | `bak_20260604_bsy_wa_bank` | 1 | | `bak_20260604_bsy_wa_money_log` | 0 | | `bak_20260604_bsy_eb_user_integral_record` | 1666 | | `bak_20260604_bsy_eb_user_address` | 73 | | `bak_20260604_bsy_eb_user_bill` | 47 | | `bak_20260604_bsy_eb_user_brokerage_record` | 0 | | `bak_20260604_bsy_eb_user_experience_record` | 47 | | `bak_20260604_bsy_eb_user_extract` | 0 | | `bak_20260604_bsy_eb_user_level` | 0 | | `bak_20260604_bsy_eb_user_recharge` | 0 | | `bak_20260604_bsy_eb_user_sign` | 0 | | `bak_20260604_bsy_eb_user_token` | 0 | | `bak_20260604_bsy_eb_user_visit_record` | 12 | | `bak_20260604_bsy_eb_store_cart` | 0 | | `bak_20260604_bsy_eb_store_coupon_user` | 0 | | `bak_20260604_bsy_eb_store_order` | 47 | | `bak_20260604_bsy_eb_sms_record` | 0 | ### 独立复核结果 | 复核项 | 剩余行数 | | --- | ---: | | `wa_users` | 0 | | `eb_user` | 0 | | `wa_merchandise` | 0 | | `wa_order` seller 或 buyer 命中 | 0 | | `wa_selfbonus_log` | 0 | | `wa_sharebonus_log` | 0 | | `wa_coupon_log` | 0 | | `wa_withdraw` | 0 | | `wa_address` | 0 | | `wa_alipay` | 0 | | `wa_bank` | 0 | | `eb_user_integral_record` | 0 | | `eb_user_address` | 0 | | `eb_user_bill` | 0 | | `eb_user_experience_record` | 0 | | `eb_user_visit_record` | 0 | | `eb_store_order` | 0 | | 删除名单外 `wa_users.pid` 指向待删用户 | 0 | | 删除名单外 `eb_user.spread_uid` 指向待删用户 | 0 | 说明:`information_schema.TABLES.TABLE_ROWS` 对 InnoDB 表可能是估算值;本节备份行数以执行时 `COUNT(*)` 输出为准。