MySql-通过多个列获取重复项

MySql-通过多个列获取重复项,mysql,Mysql,我有一个零件库存表,它按零件名、仓库ID、供应商代码主要兴趣列存储零件。它应该只有WarehouseId和VendorCode的唯一PartName条目。但是,条目是混合的,对于这种情况,我需要获取PartName、WarehouseId和Vendor。例如: ABC133, Warehouse 10, VendorCode 1234 ABC133, Warehouse 10, VendorCode 1222 BBB111, Warehouse 20, VendorCode 1111 BBB1

我有一个零件库存表,它按零件名、仓库ID、供应商代码主要兴趣列存储零件。它应该只有WarehouseId和VendorCode的唯一PartName条目。但是,条目是混合的,对于这种情况,我需要获取PartName、WarehouseId和Vendor。例如:

ABC133, Warehouse 10, VendorCode 1234
ABC133, Warehouse 10, VendorCode 1222

BBB111, Warehouse 20, VendorCode 1111
BBB111, Warehouse 20, VendorCode 2222
我已经定制了一个在该网站上找到的查询来实现这一点,但它只为每个重复的PartName带来第一个重复项,我需要获得所有错误的条目:

ABC133, Warehouse 10, VendorCode 1222

BBB111, Warehouse 20, VendorCode 1111
这是我使用的查询:

SELECT i.MFGPN, i.VendorCode, i.WarehouseID FROM edi_846_inventory i
INNER JOIN (SELECT MFGPN FROM edi_846_inventory 
GROUP BY MFGPN HAVING count(MFGPN) > 1 and count(VendorCode) > 1) dup ON i.MFGPN = dup.MFGPN
where MFGPN is the PartName

谢谢

这是您想要的查询:

SELECT i.MFGPN, i.VendorCode, i.WarehouseID
FROM edi_846_inventory i INNER JOIN
     (SELECT MFGPN, WarehouseID
      FROM edi_846_inventory 
      GROUP BY MFGPN, WarehouseID
      HAVING count(*) > 1 
     ) dup
     ON i.MFGPN = dup.MFGPN AND i.WarehouseID = dup.WarehouseID;
换句话说,您的子查询需要同时按MFGPN和WarehouseID进行聚合

此外,仅将供应商连接在一起就足够了:

      SELECT MFGPN, WarehouseID, GROUP_CONCAT(VendorCode) as Vendors
      FROM edi_846_inventory 
      GROUP BY MFGPN, WarehouseID
      HAVING count(*) > 1 

一位同事找到了一个解决方案:

选择i.MFGPN、i.WarehouseID、i.VendorCode、i.IngramSKU

来自edi_846_库存i i.MFGPN在哪里 选择* 从…起 选择不同的i.MFGPN 来自edi_846_库存i 按i.MFGPN、i.WarehouseID分组 计数*>1的 重复
按i.MFGPN,i.WarehouseID订购ABC133,仓库10,供应商代码1234-ABC133,仓库10,供应商代码1222两个您如何确定第二个是重复的?是否有主键或日期时间列来识别较早发生的条目?我应该有唯一的零件号+仓库ID+供应商代码;零件号和仓库应该只有一个且只有一个供应商代码