我是一名网络开发人员,因此缺乏操纵海量数据的知识。
同事正在寻找解决我们数据问题的方法。我们有一个大约400k行的表,列出了公司名称。
设计这个的人并没有意识到公司需要某种独特的标识符,所以公司名称有重复的条目。
根据公司名称使用什么方法来匹配所有这些记录,并根据某种标准删除重复记录(另一栏)
我正在考虑编写一个脚本来在php中执行此操作,但我真的很难相信我的脚本能够在执行这么多行之间的比较时执行。有什么建议吗?
答案 0 :(得分:0)
我过去这样做的方法是编写一个只返回我想要的集合的查询(通常使用DISTINCT +子查询来确定基于其他值的正确记录),并将其插入到不同的表中。然后,您可以删除旧表并将新表重命名为旧名称。
答案 1 :(得分: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
答案 2 :(得分:0)
答案: Answer origin
1)从table1删除
2)使用table1,table1作为vtable
3)WHERE(不是table1.ID&gt; vtable.ID)
4)AND(table1.field_name = vtable.field_name)
- 在这里告诉mysql有一个table1。
- 然后你告诉它你将使用table1和一个值为table1的虚拟表。
- 这会让mysql不能将记录与自身进行比较!
- 在此告诉它不应该有相同field_name的记录。
醇>