MySQL选择产品相似产​​品

问题描述:

我有两个表产品和类似的产品。产品表包含与可用产品相关的数据,但是这些表具有相同但具有不同产品ID的产品负载。这就是为什么我有另一张表来存放所有类似产品的数据。我需要运行一个查询来从产品表中选择产品,但同时也会检查similar_products表以不选择任何重复的产品。MySQL选择产品相似产​​品

因此,例如:

产品表:

ProductID | Manufacturer | Part No  | Name 
----------------------------------------------------------------- 
8202  | Hp   | 402146-B21 | HP Auto Synch Cable 
8210  | Hp   | 113894-B21 | HP Stylus 3 Pack 
8211  | Hp   | 113894-B21 | HP Stylus 3 Pack 
8212  | Hp   | 113894-B21 | HP Stylus 3 Pack 

Similar_products表

ProductID | Similar_ProductID 
----------|------------------- 
8210  | 8211 
8210  | 8212 
8211  | 8210 
8211  | 8212 
8212  | 8210 
8212  | 8211 

如何运行一个查询,将只选择产品ID 8202和8210,而不是选择重复产品。

+0

变化。如果产品X相似产品y,是否遵循(看起来应该)产品y与产品x相似?换句话说,会不会有重复? – Strawberry

+0

如果产品x与产品y相似,而产品y与产品z相似,是否意味着产品x也与产品z相似,通过传递性?另外,在你的例子中,当与8210不相似时,如何选择8202? –

+0

@Strawberry不是所有的产品都会有重复,但有些产品是相似的,但有不同的产品,但是当为magento商店创建出口时,我无法导出重复的产品,这就是为什么我需要从给定产品的所有重复产品中只选择一种产品的原因。 – user4676307

如果你总是有关系X〜Y作为两条记录[X,Y]和[Y,X]在Similar_products你的问题是The Rows Holding the Group-wise Maximum of a Certain Column

SELECT 
    p.ProductID, p.Name 
FROM 
    Products as p 
WHERE 
    NOT EXISTS(
     SELECT 
      1 
     FROM 
      Similar_products s 
     WHERE 
      p.ProductID=s.ProductID 
      AND p.ProductID>s.Similar_ProductID 
    )