MySql-通过多个列获取重复项
我有一个零件库存表,它按零件名、仓库ID、供应商代码主要兴趣列存储零件。它应该只有WarehouseId和VendorCode的唯一PartName条目。但是,条目是混合的,对于这种情况,我需要获取PartName、WarehouseId和Vendor。例如: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
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+供应商代码;零件号和仓库应该只有一个且只有一个供应商代码