一张多用户的通讯记录表,主要是手机信息,每个用户可以建立自己的联系人组。
原来数据对数据没有校验,用户可以在一个组里面输入重复手机号码,如果数据量大,会造成数据重复。
所以要做一个唯一性的索引,如下:
create unique index inx_uniq_cellphone_onegroup on addresslist (cellphone, groupid, operatorid);
目的是保证每个用户的每个组里面,不能有同样的cellphone。
但是建立的时候出错,因为里面原来有重复的数据。
清除重复的数据,用如下的sql,如果重复的就删除rowid不等于max(rowid)的那条记录。
delete addresslist
where rowid not in (select rowid1
from addresslist a,
(select cellphone,
groupid,
operatorid,
max(rowid) rowid1,
count(*)
from addresslist
group by cellphone, groupid, operatorid) b
where a.cellphone = b.cellphone
and a.groupid = b.groupid
and a.operatorid = b.operatorid
and a.rowid = b.rowid1)
《“删除表中重复数据的sql”》 有 1 条评论
十四让你写的吧?/qiang