首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找相同列数据的重复项

查找相同列数据的重复项
EN

Stack Overflow用户
提问于 2013-06-05 07:52:34
回答 3查看 111关注 0票数 0

我发现了一个查询,该查询获取所有重复项并按列名对它们进行分组,但我需要在其自己的行上显示每条记录,并按列名进行分组……

我怀疑的是,已经上传了具有相同设计列的多个记录,我需要能够比较每一行,以便确定哪些记录处于活动状态。

下面的查询似乎可以工作,但每次我尝试使用mysql时,它都会崩溃:

代码语言:javascript
复制
SELECT *
FROM 2009_product_catalog
WHERE sku IN (
    SELECT sku
    FROM 2009_product_catalog
    GROUP BY sku
    HAVING count(sku) > 1
    )
ORDER BY sku

我需要所有的记录来显示,而不仅仅是那些可能是重复的记录。原因是,我需要能够比较其余的列,这样我才能知道哪些重复项需要删除。

EN

回答 3

Stack Overflow用户

发布于 2013-06-05 07:54:39

您的查询在逻辑上是正确的。但是,MySQL在使用子查询优化in时存在一些问题。试试这个版本:

代码语言:javascript
复制
SELECT pc.*
FROM 2009_product_catalog pc join
     (SELECT sku
      FROM 2009_product_catalog
      GROUP BY sku
      HAVING count(sku) > 1
     ) pcsum
     on pcsum.sku = pc.sku
ORDER BY sku;

如果这仍然不起作用,那么请确保您在2009_product_catalog(sku, pcid)上有一个索引(其中pcid是表中每一行的惟一id。然后试试这个:

代码语言:javascript
复制
select pc.*
FROM 2009_product_catalog pc
where exists (select 1
              from 2009_product_catalog pc2
              where pc2.sku = pc.sku and pc2.pcid <> pc.pcid
             )
票数 0
EN

Stack Overflow用户

发布于 2013-06-05 11:33:50

我认为INexists语句的性能非常重。

假设您的表有一个名为id的字段作为您的主键。请记住在sku字段上创建索引。

代码语言:javascript
复制
SELECT pc.*
FROM 
    2009_product_catalog pc
        INNER JOIN 2009_product_catalog pc2 ON pc.sku = pc2.sku AND pc.id != pc2.id

编辑

代码语言:javascript
复制
SELECT pc.*, pc2.id as `pc2_id`
FROM 
    2009_product_catalog pc
        LEFT OUTER JOIN 2009_product_catalog pc2 ON pc.sku = pc2.sku AND pc.id != pc2.id

这个查询给你所有的记录,每个重复的记录都有pc2_id不是null。如果pc2_id为null,则不会重复。否则,重复2次以上的记录会出现在你的结果中1次以上,有问题吗?

票数 0
EN

Stack Overflow用户

发布于 2013-06-06 01:50:50

代码语言:javascript
复制
SELECT * FROM 2009_product_catalog t1 INNER JOIN
( SELECT sku FROM 2009_product_catalog GROUP BY sku HAVING COUNT(sku) > 1 ) t2
ON t1.sku = t2.sku

这是您问题中发布的原始查询的替代查询。它使用连接而不是子查询,连接自然更快。

t1是原始表。t2只包含那些重复的行。结果(内部联接)将具有重复sku的记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16929321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档