根据字段值标记表中的重复记录

时间:2014-03-15 15:27:19

标签: mysql count duplicates

我有一张表

Name | Type | Area

对于Type = A,我想存储两个新字段

Duplicate_Name表中存在=或包含该名称的另一条记录

Duplicate_Name_Area与上面相同,但仅限于Area与

相同的地方

在一个理想的世界中,我不仅会更新旗帜,还会计数。

1 个答案:

答案 0 :(得分:0)

您可以在select查询和自加入中获取所需的数据:

select t.name, t.type, t.area,
       count(*) - 1 as Duplicate_Name,
       sum(tother.area = t.area) - 1 as Duplicate_Name_Area
from table t left outer join
     table tother
     on tother.name like concat('%', t.name, '%');

请注意- 1。这是因为给定的记录总是匹配自己。您似乎在表中没有唯一ID(表应始终具有唯一ID),因此查询只会从匹配总数中减去1

此外,name的比较对较大的数据不会有效,因为它无法利用索引。