通过两列组合查找重复记录

问题描述 投票:0回答:1

我在 MySQL 中有一个表 (Project_Supplier_Status),如下所示:

项目 供应商 状态 Track_Id
Pro1 支持1 P 1
Pro1 支持1 P 2
Pro1 支持1 P 3
Pro1 支持1 P 4
Pro5 支持5 P 5
Pro5 支持5 P 6
Pro5 Sup6 P 7

问题陈述:

  1. 如果所有重复的 Pro1(项目)都有相同的 Sup1(供应商),那么我们 必须将其中一个记录保留为状态 P,并丢弃另一个记录 记录为状态 F。
  2. 如果所有重复的Pro5(项目)都有多个供应商(Sup5,Sup6),那么我们 必须丢弃所有状态为 F 的记录。

我需要Mysql查询来对100 000条记录执行上述2个操作。

更新

所需输出:

项目 供应商 状态 Track_Id
Pro1 支持1 P 1
Pro1 支持1 F 2
Pro1 支持1 F 3
Pro1 支持1 F 4
Pro5 支持5 F 5
Pro5 支持5 F 6
Pro5 Sup6 F 7
sql mysql database jdbc
1个回答
0
投票

常见的多表UPDATE。

UPDATE Project_Supplier_Status t1
JOIN Project_Supplier_Status t2 USING (Project)
SET t1.Status = 'F' -- update status
WHERE (t1.supplier <> t2.supplier) -- if exists another supplier
   OR (t1.supplier = t2.supplier AND t1.Track_Id > t2.Track_Id) -- or lower id
   ;
© www.soinside.com 2019 - 2024. All rights reserved.