1

我是一名网络开发人员,因此缺乏处理海量数据的知识。

一位同事正在寻找解决我们数据问题的方法。我们有一个大约 400k 行的表,其中列出了公司名称。

设计这个的人没有意识到公司需要某种唯一标识符,因此公司名称存在重复条目。

使用什么方法可以根据公司名称匹配所有这些记录,并根据某种标准删除重复项(另一列)

我正在考虑在 php 中编写一个脚本来执行此操作,但我真的很难相信我的脚本能够在这么多行之间进行比较时执行。有什么建议吗?

4

3 回答 3

0

答案: 答案来源

1)从表1中删除

2)使用table1,table1作为vtable

3) WHERE (不是 table1.ID>vtable.ID)

4) AND (table1.field_name=vtable.field_name)

  1. 这里你告诉mysql有一个table1。
  2. 然后你告诉它你将使用 table1 和一个带有 table1 值的虚拟表。
  3. 这将让 mysql 不与自己比较记录!
  4. 在这里你告诉它不应该有具有相同字段名的记录。
于 2012-03-22T17:52:51.830 回答
0

我过去这样做的方法是编写一个只返回我想要的集合的查询(通常使用 DISTINCT + 一个子查询来根据其他值确定正确的记录),并将其插入到不同的表中。然后,您可以删除旧表并将新表重命名为旧名称。

于 2012-03-22T17:49:28.743 回答
0

要在表中查找具有重复项的公司列表,您可以使用如下脚本:

SELECT NAME
FROM companies
GROUP BY NAME
HAVING COUNT(*) > 1

以下将删除所有重复项,但在 col 列中包含最大值除外

DELETE del
FROM companies AS del
INNER JOIN (
    SELECT NAME, MAX(col) AS col
    FROM companies
    GROUP BY NAME
    HAVING COUNT(*) > 1
) AS sub
    ON del.NAME = sub.NAME AND del.col <> sub.col
于 2012-03-22T17:50:46.700 回答