我有一张表
Name | Type | Area
对于Type = A,我想存储两个新字段
Duplicate_Name表中存在=或包含该名称的另一条记录
Duplicate_Name_Area与上面相同,但仅限于Area与
相同的地方在一个理想的世界中,我不仅会更新旗帜,还会计数。
答案 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
的比较对较大的数据不会有效,因为它无法利用索引。