后台显示订阅用户 8600 人,导出后按小写邮箱去重只剩 7200,差出来的 1400 条全是同一个地址换了个大小写。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

UPDATE wp_subscribers SET email = LOWER(TRIM(email));
SELECT COUNT(DISTINCT LOWER(email)) FROM wp_subscribers;

入库时没统一大小写,唯一索引又建在原始字符串上,同一个邮箱换个大小写就能再插一条。统计 SQL 直接算总行数,把重复算进去了。这一点先确认清楚,后面就不用反复试。

「邮箱去重」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

改完隔一天再看一次,当场正常不代表能稳住。

具体做法是,入库前统一转小写并去掉首尾空格,唯一索引建在转换后的值上;历史数据跑一次去重,保留最早那条,其余标记合并;统计改成按小写邮箱去重,和导出数对一遍。

改完照着核一遍,后台人数和去重导出数一致,再提交大写邮箱提示已订阅。

作者 9823189