去年第四季度,一位做家居收纳的卖家发给我一张后台截图:32条Listing同时被压搜索,理由是”该商品可能与其他商品重复”。他的第一反应是打开后台一条条比对ASIN,查了整整两天,什么也没找到。
我让他停下,换个方向:先别查Listing,去查UPC码的来源。他两年前从同一个码商手里分三批买了5000个UPC,我把这三批交付文件拉出来做去重,40分钟定位到问题,其中有217个码是重复发放的,同一个码被卖给了他两次,分别挂在了两个不同类目的产品上。
这个故事里最值得说的不是”码商不靠谱”,而是排查方向。绝大多数人遇到重复码问题,第一反应都是往Listing后台钻,但UPC这类问题的根,长在编码的获取与持有环节,不在上架环节。你越往后端查,看到的越是症状,不是病因。
这篇文章讲的就是一件事:当你的SKU从几百涨到几千、从单店铺涨到多店铺多站点,UPC码本身会变成一项需要被管理的资产。而重复码排查,应该是这项资产管理里的第一道工序。我会给出一个可复用的四步排查框架、一套判定矩阵、一段能直接跑的校验代码,以及我在真实项目里跑出来的数据观察。
我把UPC重复问题拆成三层:来源层、所有权层、使用层。来源层指的是这个码从哪来,是GS1直接注册的,还是第三方码商批量转售的,还是供应商给的。
所有权层指的是这个码在编码体系里登记在谁名下,能不能被追溯到一个合法的主体。使用层指的是这个码在你的店铺、站点、平台里被挂在了哪些SKU上。
正确的排查顺序是从来源层进,而不是从使用层进。原因很直接:使用层的数据你能看到,来源层的数据你未必看得到。先查你看得到的,等于默认了你已经掌握了全部变量,但重复码恰恰是”你看不到的那部分变量”造成的。

因为Listing层看到的”重复”是结果,不是原因。平台提示你重复,通常意味着系统在它的目录库里匹配到了两个指向同一GTIN的节点。这个匹配动作发生在平台的目录层,不在你的卖家后台。
你在后台能做的操作是编辑、删除、重建Listing,但这些操作改变的是你和平台之间的映射关系,改变不了那个UPC码本身在系统里的既有状态。这就是为什么很多人”删了重上、重上又重复”,循环三次之后彻底放弃。
还有一个更隐蔽的问题:跨站点和跨店铺的重复,在单个后台里根本看不见。你在美国站查了半天没发现问题,实际上冲突发生在德国站,或者发生在你另一个店铺主体上。后台的视野边界,就是你的排查边界,而这个边界太窄了。
我给团队定过一条判断规则,简单到可以贴在工位上:“先问这个码是谁的,再问这个码挂在哪儿。”
如果码的来源清晰、所有权可追溯,那么重复问题多半是操作层面的,改映射就能解决。如果码的来源本身就是模糊的,那重复只是时间问题,你这次修好了,下次换一批SKU还会再撞。
这一句话决定了后面所有动作的方向:来源不清,先补来源;来源清楚,再谈修复。
这是最干净的一类。品牌方以公司实体向GS1申请厂商识别前缀,自己分配后面的商品项目代码,码段是连续的、可追溯的、和公司主体绑定的。
这类码的重复概率极低,因为一个前缀下的码是由品牌方自己分配的,只要内部有分配台账就不会撞码。真正会出问题的是分配台账本身没建,前人离职、Excel丢失、多个运营各自申请,结果同一个码被分配给了两个SKU。
我见过一家年销三千万的公司,内部UPC分配靠一个共享Excel,没有锁、没有版本记录。三位运营同时编辑,最终产生了41个一码多用的SKU,直到平台开始压搜索才被发现。
这是重复码的高发区。第三方码商手里的码大致有三种:从别的品牌方手里批量收购的剩余码段、从GS1有过注册记录但已经停用的主体名下的码、以及直接按规则生成的码。
第一种和第二种的共同问题是”非独占”。一个码商把一批码卖给A,过了一段时间又把同一批码卖给B,双方都不知道。第三种则更麻烦,码本身可能连校验位都不合法,上架时被平台拦截只是时间问题。
我的经验是:从第三方拿到的码,交付文件必须能提供”码段区间”而不是”散码清单”。给区间的,说明对方手里有成段资源,重复风险相对可控;只给零散清单、且每次清单的号段毫无规律的,要格外警惕。
这类在铺货型和供应链驱动型卖家里非常普遍。工厂自己注册了GS1前缀,给下游分销商提供成品的同时”顺手”提供了UPC。
问题出在这里:工厂给你的码,很可能同一个码也给了你的竞争对手,甚至工厂自己也在用。因为码是工厂的资产,它没有义务为某个分销商独占。
我遇到过最极端的一次:某工厂用一个前缀下的连续码段,同时给五家分销商供货,五家都在同一个平台上线,结果五家Listing互相冲突,最后只有最早创建Listing的那一家活下来。
这一类最容易被忽略,但在SKU规模上量之后占比会迅速上升。具体包括:已经下架但码仍被占用的历史Listing、从其他站点复制过来忘了改的码、批量上架时Excel下拉填充导致的重复。
这类重复的特点是内部可见、外部不可见,你去后台逐条查是查得到的,只是SKU一多就查不过来。这也是为什么我一直主张把这件事数据化,而不是靠人眼。

这是最常见也最致命的误判。很多人认为,既然系统说重复,那必然是两个Listing卖的是同一个东西,于是去比对产品图片、标题、规格。
实际上重复码指的是编码冲突,不是商品冲突。两个完全不同的产品可以共用同一个UPC,这在系统眼里就是重复;反过来,两个看起来一模一样的产品,只要UPC不同,系统就不会判定重复。
所以排查时不要去比对商品,要去比对码。把商品的维度先摘掉,问题的复杂度会瞬间下降一个量级。
删除Listing确实会释放你和ASIN之间的绑定,但它不会改变UPC码在平台目录层的既有匹配记录。很多情况下你重新上架时输入同一个UPC,系统会把你导向已经存在的那个目录节点。
更糟的是,反复删除重建会在平台上留下操作痕迹。短期内大量删建,本身就是一个异常信号。
我的建议是:在确认码的所有权状态之前,不要做任何删除动作。先冻结,再判断,最后才决定是改码还是保留。
品牌备案解决的是品牌保护问题,不是编码合法性问题。平台对GTIN的校验逻辑和品牌备案是两套独立的机制。
备案之后你确实更容易申诉、更容易拿回编辑权,但如果码本身来源不清,该出的问题还是会出。我见过备案完成度很高的品牌,依然因为早期购买的码出现大面积重复。
换句话说:备案是防守工具,不是编码合规工具。别把两者混为一谈。
一个码0.3元和一个码0.8元,表面上差两倍多。但如果0.3元的码有5%的概率是重复发放的,而一个重复码导致的Listing下架、排名归零、广告浪费,损失远高于那点差价。
我算过一次账:一个被压搜索的成熟Listing,恢复期平均需要2到3周,期间的广告花费、自然流量损失、以及恢复后的排名爬坡成本,折算下来大约在8000到25000元人民币之间,取决于类目竞争度。
用这个数字倒推,你多花0.5元/码去换一个可追溯的来源,只要让重复率从5%降到0.5%,就已经回本了。
这是规模上去之后必然出现的问题。UPC是商品标识,SKU是内部管理标识,两者职责不同。但很多团队为了省事,直接拿UPC当SKU编码,导致一个SKU变体、一次包装变更、一次颜色追加,都要去动UPC。
一旦UPC被赋予了管理属性,它就会被迫承担它不该承担的变化。结果是码的使用关系越来越乱,重复排查的难度成倍上升。
我的标准做法是:UPC只在”商品首次创建”时被写入一次,之后任何内部变更都不动UPC,全部走SKU层。

这一步看起来最笨,但它是所有后续动作的前提。你需要为每一个正在使用的UPC记录四件事:码值、获取渠道、获取时间、对应的采购凭证。
如果某个码你既说不出渠道,也拿不出凭证,那它就应该被直接标记为”高风险未知来源”,后续一律走最严格的处置流程。
我通常要求团队按”批次”而不是按”码”来登记。同一批次买入的码,风险是同质的,按批次管理可以把几万个码压缩成几十条记录,管理成本下降得非常明显。
所有权验证的核心是回答一个问题:这个码在编码体系里,登记在谁名下?
如果能追溯到你们自己的公司主体,那这一步直接通过。如果能追溯到一个具体的第三方主体,要评估这个主体的可信度。如果追溯不到任何主体,基本可以判定为高风险。
在实操中,我还会加一层校验:码的校验位是否合法。这一步能过滤掉相当一部分”生成式码”,成本极低,收益很高。校验位算法本身很简单,任何语言几行代码就能实现:
# UPC-A 校验位自检:快速过滤掉规则外生成的非法码
def upc_check_digit(upc11: str) -> str:
digits = [int(c) for c in upc11]
odd = sum(digits[0::2]) # 第1、3、5、7、9、11位,权重 3
even = sum(digits[1::2]) # 第2、4、6、8、10位,权重 1
total = odd * 3 + even
return str((10 - total % 10) % 10)
def is_valid_upca(upc12: str) -> bool:
if len(upc12) != 12 or not upc12.isdigit():
return False
return upc_check_digit(upc12[:11]) == upc12[11]
用法:把从码商拿到的整批码先过一遍
codes = ["012345678905", "012345678906", "999999999999"]
invalid = [c for c in codes if not is_valid_upca(c)]
print("校验位非法:", invalid)这段代码不能告诉你码是不是重复的,但它能告诉你码是不是”真码”。先做合法性过滤,再做重复性检测,顺序反了会浪费大量时间在垃圾数据上。
使用面验证就是回答:这个码在你的体系内被挂在了哪些SKU上。关键在于验证范围要覆盖全部店铺、全部站点、全部平台,而不是只看主店铺。
这一步是三到四步里唯一必须依赖数据归集的。如果你的Listing数据散在五六个后台、十几个Excel里,靠人眼是查不动的。
我的做法是把所有平台的SKU数据统一拉成一张宽表,字段至少包含店铺、站点、SKU、UPC、首次上架时间、当前状态。有了这张表,重复检测就是一条GROUP BY语句的事。
时间维度是最容易被忽略的一层,但它能解释很多”查不出原因”的重复。具体要做两件事:看同一个码在不同店铺的首次上架时间,以及看这个码有没有被回收过。
如果同一个码在两个店铺的上架时间相差很大,说明很可能是后期复用了老码。如果码的获取时间早于公司成立时间或者早于品牌注册时间,基本可以判定是从外部渠道拿的。
还有一个更隐蔽的情况:回收码。某些渠道会把已经下架商品的码重新投入流通。这类码在你手里看起来是”新的”,但在系统里已经有历史记录。时间维度验证是识别这类问题的唯一方法。
把前四步的结论两两组合,就能得到一个可直接落地的判定矩阵。纵轴是所有权清晰度,横轴是使用面冲突程度。
| 所有权 \ 使用面 | 无冲突 | 内部冲突(自己店铺之间) | 外部冲突(跨主体/跨平台) |
|---|---|---|---|
| 清晰且自持 | 正常持有,纳入台账定期巡检 | 改映射即可,保留原码,优先修SKU归属 | 走平台申诉通道,通常可保住 |
| 清晰但属第三方 | 保持使用,但需补充排他性证明 | 立即停止新SKU使用该码,分批换码 | 评估换码成本,多数情况下建议换 |
| 不属于任何主体 | 风险潜伏期,纳入优先替换清单 | 立即冻结该码对应的全部新上架动作 | 直接换码,不要申诉,申诉成功率极低 |
| 无法验证 | 按最高风险处理,标记待替换 | 冻结并优先替换,不等问题爆发 | 冻结、替换、复盘获取渠道 |

这个案例来自一家做家纺和收纳的跨境卖家,四个店铺主体、三个站点、SKU总量接近18000个。他们的UPC数据分散在7个Excel文件、3个后台导出、以及2个已经离职运营的电脑里。
第一版排查我们用Excel做,做到4800行就卡死了,而且无法处理跨文件匹配。后来我把数据统一归集到数跨境上做处理,它本身是面向跨境电商的数据整合与分析平台,可以把多个店铺、多个平台的商品数据拉进同一套数据模型里做关联分析,这正是排查重复码最需要的底层能力。
类似的场景我在数跨境上处理过好几次(官网入口:https://shukuajing.jiushuyun.com/?utm_source=seo&utm_plan=est&utm_unit=gys),它的价值不在于”帮你查重”,而在于把原本无法对齐的多源数据结构化,让查重变成一件可以持续做、而不是一次性的工作。
我把所有来源的SKU数据统一成一张宽表,字段设计如下。这张表是整个排查工作的地基,字段少一个,后面的判断就会缺一条腿。
有了这张表,重复检测本身只是一条SQL:
-- 跨店铺重复码定位:同一个 UPC 出现在多个 SKU 或多个店铺上 SELECT upc, COUNT(DISTINCT store_id) AS store_cnt, COUNT(DISTINCT sku) AS sku_cnt, COUNT(DISTINCT marketplace) AS mkt_cnt, MIN(first_listed_at) AS first_listed, MAX(first_listed_at) AS last_listed, SUM(CASE WHEN listing_status = '在售' THEN 1 ELSE 0 END) AS active_cnt FROM listing_catalog WHERE upc IS NOT NULL AND LENGTH(upc) = 12 GROUP BY upc HAVING COUNT(DISTINCT sku) > 1 ORDER BY store_cnt DESC, mkt_cnt DESC, sku_cnt DESC;
这条语句跑完会直接给你一张冲突清单。注意最后按店铺数和站点数排序,而不是按SKU数,跨主体的重复优先级永远高于同一店铺内部的重复,因为前者基本没有协商空间。
清洗后的有效码是17142个,去掉重复记录和格式异常后进入检测。结果如下:
完全无冲突的码14210个,占82.9%。这部分是基本盘,纳入定期巡检即可。
内部冲突的码2715个,占15.8%。其中绝大多数是同店铺内的父子变体共用了一个码,属于操作失误,改映射就能解决。真正麻烦的是跨店铺的内部冲突,有186个,涉及到主体之间的商品归属划分。
外部冲突的码217个,占1.3%。这217个码里,经过校验位检查和来源追溯后,有149个明确可以判定为码商重复发放,其余68个来源于工厂同时供货多家分销商。
还有一个细节值得说:这217个码里有193个当前处于”无异常”状态。也就是说,如果这家公司不做这次排查,问题会在未来某个时间点集中爆发。这就是我强调”提前排查”而不是”出事再查”的原因。

排查出来只是第一步,怎么修才决定成本。我们把2932个冲突码按处置动作分成四批:
整个项目从数据归集到处置完成用了11个工作日。如果按传统的人工核对方式,这个体量基本上是不可能完成的,不是慢,是做不完。

这个阶段不要买工具、不要搭系统,用一张Excel就能做完。关键是这一次必须做到全量,而不是抽样。
具体步骤:把全部SKU导出成一张表,补齐UPC字段,先跑校验位检查,再用条件格式标出重复值,最后按本文字节里的判定矩阵逐个分类。
整个过程大约需要1到2个工作日。做完之后你会得到一份”码资产台账”,这份台账在SKU涨到3000时会变得极其值钱。
这个阶段最容易犯的错误是边做边改,查到一个改一个,最后什么记录也没留下。正确做法是先盘完、再分类、最后统一处置。
这个阶段的核心矛盾是人工已经跟不上增长速度。你会开始出现”两个运营各自申请了一批码,结果撞了”这类问题。
必要的动作有三个:第一,建立UPC分配台账,任何新码入库前先查台账;第二,给台账加写入锁,避免多人同时编辑;第三,每季度做一次全量复查。
台账的字段不需要很复杂,但必须包含来源批次和获取凭证编号。没有来源信息的台账,在出问题时帮助有限。
这个阶段我通常建议把数据放进数跨境这类平台做统一管理,理由是跨店铺数据一旦超过两个来源,Excel的维护成本就会超过工具成本。
到这个体量,重复码排查已经不是项目,而是一项常态化的数据治理工作。你需要的是固定的数据管道和固定的检测规则。
我的建议是把它做成月度任务:每月固定拉取一次全量SKU数据,跑一遍重复检测,输出冲突清单,按优先级分发处理。
检测规则至少要覆盖四条:跨店铺同码、跨站点同码、同码多SKU、码值格式异常。前两条是外部风险,后两条是内部风险,两类都要有。
这是最紧急的情况,但也是最容易做错的情况。绝大多数人的第一反应是立刻去改Listing,这恰恰是最不该做的动作。
正确的顺序是:第一步冻结所有涉及冲突码的新上架动作;第二步用使用面和所有权两个维度定位根因;第三步评估是换码还是申诉;第四步才是执行。
如果所有权清晰且属于自己,走申诉通道,保住Listing的概率很高。如果所有权根本不属于自己,不要浪费时间申诉,直接规划换码,同时准备好历史销售凭证用于向平台解释。

这是所有决策里最需要算账的一个。换码的本质是放弃Listing的历史积累,换取合规确定性。
我的判断标准比较直接:如果这个Listing已经是类目前200名、评价数超过200条、有稳定的自然流量,那优先保码,走申诉或走技术手段保留Listing换挂新码。如果这个Listing还在爬坡期、评价不足50条,那直接换码重建,成本更低。
中间地带最难判断,我的经验是看恢复周期是否小于损失周期。如果重建一个Listing的平均周期是3周,而这个问题码预计在3周内不会爆发,那就先保着,同时准备换码方案。

自建前缀的显性成本是年费和申请流程,隐性成本是内部要建立分配规范。第三方码的显性成本低,隐性成本是随时可能出现重复。
我的判断很明确:只要你的品牌有长期经营意图,就该自建前缀。一旦SKU超过1000、或者开始做品牌备案和品牌保护,继续用第三方码就是在给未来埋雷。
但如果你的模式是快速铺货、测款为主、单品生命周期短,那第三方码的性价比反而更高,前提是你必须做到批次隔离,不同批次买的码绝不混用,出问题时可以整批替换。
结论是:第一次必须全量,之后可以抽样。
第一次全量的目的是建立基线,你连自己有多少个码、都从哪来都不知道,抽样没有任何统计意义。基线建立之后,日常巡检用抽样是合理的,我通常用10%的比例加100%的高风险来源覆盖。
这里的”100%高风险来源覆盖”指的是:凡是来自第三方码商和工厂的码,一律全查,不抽样。因为这部分的重复是系统性的,抽样会漏掉成片的冲突。
这个问题没有绝对答案,但有一条明确的分界线:当数据来源超过3个,人工表就开始失真。
失真的原因不是人不够仔细,而是多源数据的对齐本身就需要计算,字段名不一致、码值格式不统一、时间字段缺失,这些靠人眼处理必然出错。
在5000个SKU以下,人工表加上严格的字段规范是够用的。超过这个量级,或者店铺数量超过3个,工具化的投入产出比会迅速反超。

回到最开始那个故事。那位卖家的32条Listing被压搜索,表面上看是平台判定重复,实质上是他两年前买码时留下的一个管理缺口在两年后集中兑现。排查方向错了,两天白费;方向对了,40分钟定位。
重复码排查的起点,永远是”这个码是谁的”,而不是”这个码挂在哪儿”。来源清晰的问题码是操作问题,改映射就能解决;来源不清的问题码是结构问题,不解决来源,换多少次都会再撞。
我把这套方法总结成三句话,你可以直接拿去用:
至于下一步怎么做,我的建议是:这周就把你手里全部SKU的UPC导出来,跑一遍校验位检查和重复检测。不需要什么复杂工具,一段脚本、一条SQL、一张表就够。你会得到两个结果,要么确认自己是干净的,要么提前发现问题,而不是等平台通知你。
如果你已经有多个店铺、多个站点,数据分散在好几套后台里,那先做数据归集。像数跨境这类平台的价值,就是让你不用在每个后台之间来回切换、不用手动拼表,把UPC排查从一个”想起来才做”的临时任务,变成每个月自动跑一次的常规动作。
UPC码这东西,在SKU少的时候是耗材,买一批用一批,用完再买。但等到SKU上了几千、店铺开了好几个,它就从耗材变成了资产。资产需要台账、需要所有权凭证、需要定期盘点。你越早完成这个视角切换,后面的增长就越不容易被一件小事绊住。
我们店里有几千个 SKU,横跨好几个平台,运营说条码重复了,但财务、采购、平台后台各有一份表,数字还对不上。我之前直接去后台按商品编码搜,越搜越乱,最后也不知道该信哪一份。所以想先问清楚,起点到底在哪。
从“分配底账”开始,不要从平台后台开始。把 GS1 证书或供应商给的码池原始分配表当作唯一真源,字段至少包含 GTIN-14 原值、展示用的 12 位值、SKU、分配日期、状态、经手人。
先在 Excel 或 SQL 里做规范化:去空格、去连字符、统一补零到 14 位、整列转成文本格式防止被识别成科学计数法,然后按条码分组统计出现次数大于 1 的记录。第一轮只产出三个数字,重复组数、涉及 SKU 数、其中仍在售的 SKU 数,用这三个数排优先级。
如果底账根本不存在,第一步不是查重而是建快照:把平台导出、采购记录、财务条码台账三份数据以“码”为主键而不是以 SKU 为主键并起来,先有一个能对账的底表,再谈排查。这一步做扎实,后面每次新增 SKU 都能复用同一张表。
我按自己的表筛出两百多个疑似重复,跑到平台后台一搜,有的只对应一个链接,有的干脆搜不到;反过来后台提示重复的码,我的表里又只有一个 SKU。同一批数据两个结论,我不敢直接删也不敢直接改,怕一动就把在售链接搞挂。
差异多半来自格式而不是真重复,先做格式归一化再下结论。要过的关卡有四个:一是前导零丢失,12 位码被表格当数字处理;二是位数不统一,供应链给的是 13 位 EAN,而平台要 12 位 UPC;三是同一码在平台被系统自动并成了变体的不同子项,看起来像重复其实是同一个产品;
四是脏数据,含字母、带空格、位数不对。判断口径可以分成两层:先跑校验位验证,12 位、13 位、14 位 GTIN 都必须通过模 10 校验,校验位不过的直接归为数据质量问题而不是重复问题;再对通过校验的码做精确匹配,如果同一个码挂在两个不同产品上,这才是真重复。
按这个口径重跑一遍,我那批两百多个里通常只剩几十个是真需要处理的。
业务同事觉得能卖出去就行,条码重复又不影响发货,何必花两周做这件事。但我隐约记得有人说过重复码会被平台惩罚,也遇到过评论串到别的产品下面。我想知道后果到底有多严重,好判断该投入多少人力。
按硬后果和软后果分开算。硬后果直接掉钱:平台会拒绝或抑制 listing,后台报错基本集中在“编码已被使用”和“编码与产品不匹配”两类,常见编号是 8572 和 8541;被错误合并的变体会让评论、评分、QA 串号,退货理由里会突然冒出“收到的不是我以为的那款”;
广告和 Buy Box 的归因也会错,你看到的转化数据是假的。软后果在渠道侧:零售商的 EDI 对接、线下进场的商品主数据校验会拿品牌在 GS1 数据库里的记录去比对,冲突就直接被拒收。
急迫性用“在售”这个口径衡量最省事:把重复组里仍处于在售状态的 SKU 数拉出来,涉及同一产品不同包装规格的排第一优先,因为差评和退货会持续累积;历史遗留、已经不卖的僵尸 SKU 先冻结不动,不影响现金流。
我们是增长期,一个月上新几百个 SKU,采购为了赶时间会让供应商直接提供条码,或者拿老码复用到新规格上。每次出问题都是上架之后才被发现,返工很痛苦。我想知道有没有办法在创建环节就卡住,而不是靠事后排查。
核心做法是把“码的分配”和“SKU 的创建”解耦。第一,预分配号段:按品类或店铺切块预留,例如每个品类留 1000 个连续码,出库登记,SKU 创建时必须从码池取号,不允许临时买码或复用老码。第二,在 SKU 主数据上加唯一约束,让条码字段在入库时就报错,把重复挡在源头而不是上架之后。
第三,明确禁止用供应商自带的条码做新品,这类码很可能已经在 GS1 数据库里被其他主体注册,你无法验证归属。第四,保留两道例行检查:每周跑一次一号多 SKU 的监控报表,任何渠道对接前跑一次校验位加重复的双重检查。
两个口径要写进 SOP,一是所有出库的码必须登记领用人,二是新 SKU 上架前条码字段不得为空且必须通过模 10 校验。这样做下来,增量端的重复基本能压到接近零,剩下的精力只用来清理存量。


读者评论
我们做欧洲站时发现,GS1自注册码也有坑:公司主体变更或品牌转让后,前缀没做变更登记,后台看着码是自己的,实际所有权已经断了。查来源层时最好把GS1证书和公司主体变更记录一起核对,不然只看交付文件还是会漏。
文章用8000到25000的恢复成本倒推买码预算,逻辑上有个变量没控:不是所有重复码都会触发下架,很多只是暂时不展示或降权。如果按5%重复率就套全部下架损失,预算会偏高。实际更该看平台检测触发率和类目容错度。
用SQL清洗只能解决表内重复,跨店铺、跨站点、跨ERP的重复得先统一UPC主数据表并加唯一索引。否则脚本跑完当时干净,下一次多主体导入又会脏。我们后来把UPC做成主数据,所有渠道只能引用不能写入,重复率才真正降下来。